summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2007-10-08 23:45:24 +0000
committerjeff <jeff@FreeBSD.org>2007-10-08 23:45:24 +0000
commit57102cf5add6c7f7ca4dea8071ccd6e46560954e (patch)
tree55ed867f865288940221e212511cffaab3cd9b8e /sys
parent065472edb7ad38efc5b5b56f270ee332f76fea01 (diff)
downloadFreeBSD-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.c3
-rw-r--r--sys/kern/sched_4bsd.c2
-rw-r--r--sys/kern/sched_ule.c2
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);
OpenPOWER on IntegriCloud