diff options
author | jeff <jeff@FreeBSD.org> | 2007-02-08 01:52:25 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2007-02-08 01:52:25 +0000 |
commit | 7038c5de35a55914aa33a5549087ae49459e9851 (patch) | |
tree | 5b2024b3921a74fef4f84c62d6f9acf1a4db0712 /sys/kern/kern_switch.c | |
parent | 35c8706625e7720b1707dfc5d8df700ac0503a57 (diff) | |
download | FreeBSD-src-7038c5de35a55914aa33a5549087ae49459e9851.zip FreeBSD-src-7038c5de35a55914aa33a5549087ae49459e9851.tar.gz |
- Change types for necent runq additions to u_char rather than int.
- Fix these types in ULE as well. This fixes bugs in priority index
calculations in certain edge cases. (int)-1 % 64 != (uint)-1 % 64.
Reported by: kkenn using pho's stress2.
Diffstat (limited to 'sys/kern/kern_switch.c')
-rw-r--r-- | sys/kern/kern_switch.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/kern/kern_switch.c b/sys/kern/kern_switch.c index 13805ee..1ccf64c 100644 --- a/sys/kern/kern_switch.c +++ b/sys/kern/kern_switch.c @@ -306,7 +306,7 @@ runq_findbit(struct runq *rq) } static __inline int -runq_findbit_from(struct runq *rq, int start) +runq_findbit_from(struct runq *rq, u_char start) { struct rqbits *rqb; int bit; @@ -388,7 +388,7 @@ runq_add(struct runq *rq, struct td_sched *ts, int flags) } void -runq_add_pri(struct runq *rq, struct td_sched *ts, int pri, int flags) +runq_add_pri(struct runq *rq, struct td_sched *ts, u_char pri, int flags) { struct rqhead *rqh; @@ -478,7 +478,7 @@ runq_choose(struct runq *rq) } struct td_sched * -runq_choose_from(struct runq *rq, int idx) +runq_choose_from(struct runq *rq, u_char idx) { struct rqhead *rqh; struct td_sched *ts; @@ -511,10 +511,10 @@ runq_remove(struct runq *rq, struct td_sched *ts) } void -runq_remove_idx(struct runq *rq, struct td_sched *ts, int *idx) +runq_remove_idx(struct runq *rq, struct td_sched *ts, u_char *idx) { struct rqhead *rqh; - int pri; + u_char pri; KASSERT(ts->ts_thread->td_proc->p_sflag & PS_INMEM, ("runq_remove_idx: process swapped out")); |