diff options
Diffstat (limited to 'sys/kern/kern_thr.c')
-rw-r--r-- | sys/kern/kern_thr.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c index fab27be..8110aa2 100644 --- a/sys/kern/kern_thr.c +++ b/sys/kern/kern_thr.c @@ -217,23 +217,27 @@ create_thread(struct thread *td, mcontext_t *ctx, case SCHED_FIFO: rtp.type = PRI_FIFO; rtp.prio = sched->param.sched_priority; + rtp_to_pri(&rtp, newkg); + sched_prio(newtd, newkg->kg_user_pri); break; case SCHED_RR: rtp.type = PRI_REALTIME; rtp.prio = sched->param.sched_priority; + rtp_to_pri(&rtp, newkg); + sched_prio(newtd, newkg->kg_user_pri); break; case SCHED_OTHER: - rtp.type = PRI_TIMESHARE; - if (curthread->td_ksegrp->kg_pri_class == PRI_TIMESHARE) - rtp.prio = curthread->td_ksegrp->kg_user_pri; - else + if (curthread->td_ksegrp->kg_pri_class != + PRI_TIMESHARE) { + rtp.type = PRI_TIMESHARE; rtp.prio = 0; + rtp_to_pri(&rtp, newkg); + sched_prio(newtd, newkg->kg_user_pri); + } break; default: panic("sched policy"); } - rtp_to_pri(&rtp, newkg); - sched_prio(newtd, newkg->kg_user_pri); } TD_SET_CAN_RUN(newtd); /* if ((flags & THR_SUSPENDED) == 0) */ |