From 98725c443e25ab31679cdb55aec8e00ed4434752 Mon Sep 17 00:00:00 2001 From: Erik van der Kouwe Date: Fri, 16 Jul 2010 14:56:05 +0000 Subject: [PATCH] Fix RS warning at start-up by inheriting scdeduling properties from init for unprivileged children of system processes --- servers/pm/schedule.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/servers/pm/schedule.c b/servers/pm/schedule.c index 107e1c13a..aa0d0bdf8 100644 --- a/servers/pm/schedule.c +++ b/servers/pm/schedule.c @@ -54,6 +54,7 @@ PUBLIC void sched_init(void) PUBLIC int sched_start_user(endpoint_t ep, struct mproc *rmp) { unsigned maxprio; + endpoint_t inherit_from; int rv; /* convert nice to priority */ @@ -61,10 +62,22 @@ PUBLIC int sched_start_user(endpoint_t ep, struct mproc *rmp) return rv; } + /* scheduler must know the parent, which is not the case for a child + * of a system process created by a regular fork; in this case the + * scheduler should inherit settings from init rather than the real + * parent + */ + if (mproc[rmp->mp_parent].mp_flags & PRIV_PROC) { + assert(mproc[rmp->mp_parent].mp_scheduler == NONE); + inherit_from = INIT_PROC_NR; + } else { + inherit_from = mproc[rmp->mp_parent].mp_endpoint; + } + /* inherit quantum */ return sched_inherit(ep, /* scheduler_e */ rmp->mp_endpoint, /* schedulee_e */ - mproc[rmp->mp_parent].mp_endpoint, /* parent_e */ + inherit_from, /* parent_e */ maxprio, /* maxprio */ &rmp->mp_scheduler); /* *newsched_e */ } -- 2.44.0