diff options
author | jeff <jeff@FreeBSD.org> | 2007-10-08 23:45:24 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2007-10-08 23:45:24 +0000 |
commit | 57102cf5add6c7f7ca4dea8071ccd6e46560954e (patch) | |
tree | 55ed867f865288940221e212511cffaab3cd9b8e /sys | |
parent | 065472edb7ad38efc5b5b56f270ee332f76fea01 (diff) | |
download | FreeBSD-src-57102cf5add6c7f7ca4dea8071ccd6e46560954e.zip FreeBSD-src-57102cf5add6c7f7ca4dea8071ccd6e46560954e.tar.gz |
- Restore historical sched_yield() behavior by changing sched_relinquish()
to simply switch rather than lowering priority and switching. This allows
threads of equal priority to run but not lesser priority.
Discussed with: davidxu
Reported by: NIIMI Satoshi <sa2c@sa2c.net>
Approved by: re
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/p1003_1b.c | 3 | ||||
-rw-r--r-- | sys/kern/sched_4bsd.c | 2 | ||||
-rw-r--r-- | sys/kern/sched_ule.c | 2 |
3 files changed, 2 insertions, 5 deletions
diff --git a/sys/kern/p1003_1b.c b/sys/kern/p1003_1b.c index 69497a4..e998385 100644 --- a/sys/kern/p1003_1b.c +++ b/sys/kern/p1003_1b.c @@ -241,7 +241,8 @@ int sched_yield(struct thread *td, struct sched_yield_args *uap) { - return (ksched_yield(ksched)); + sched_relinquish(curthread); + return 0; } int diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c index 0573be0..50f9aaf 100644 --- a/sys/kern/sched_4bsd.c +++ b/sys/kern/sched_4bsd.c @@ -1324,8 +1324,6 @@ void sched_relinquish(struct thread *td) { thread_lock(td); - if (td->td_pri_class == PRI_TIMESHARE) - sched_prio(td, PRI_MAX_TIMESHARE); SCHED_STAT_INC(switch_relinquish); mi_switch(SW_VOL, NULL); thread_unlock(td); diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index 23920cf..77cf83f 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -2540,8 +2540,6 @@ void sched_relinquish(struct thread *td) { thread_lock(td); - if (td->td_pri_class == PRI_TIMESHARE) - sched_prio(td, PRI_MAX_TIMESHARE); SCHED_STAT_INC(switch_relinquish); mi_switch(SW_VOL, NULL); thread_unlock(td); |