summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_synch.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2007-10-08 23:40:40 +0000
committerjeff <jeff@FreeBSD.org>2007-10-08 23:40:40 +0000
commit065472edb7ad38efc5b5b56f270ee332f76fea01 (patch)
tree6f6f1dd8c8cb19ffecdc7da1be142d2a731fda8e /sys/kern/kern_synch.c
parent5e4673913f615ecdd71ea60704f3cf47f6814fb7 (diff)
downloadFreeBSD-src-065472edb7ad38efc5b5b56f270ee332f76fea01.zip
FreeBSD-src-065472edb7ad38efc5b5b56f270ee332f76fea01.tar.gz
- Restore historical yield() behavior by manually lowering priority and
switching. Approved by: re
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r--sys/kern/kern_synch.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index 8cdd9fe..71d5c27 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -553,8 +553,11 @@ synch_setup(dummy)
int
yield(struct thread *td, struct yield_args *uap)
{
- mtx_assert(&Giant, MA_NOTOWNED);
- (void)uap;
- sched_relinquish(td);
+
+ thread_lock(td);
+ sched_prio(td, PRI_MAX_TIMESHARE);
+ mi_switch(SW_VOL, NULL);
+ thread_unlock(td);
+ td->td_retval[0] = 0;
return (0);
}
OpenPOWER on IntegriCloud