Fix RS warning at start-up by inheriting scdeduling properties from init for unprivileged children of system processes
This commit is contained in:
parent
7f47f4174d
commit
98725c443e
1 changed files with 14 additions and 1 deletions
|
@ -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 */
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue