diff options
author | jeff <jeff@FreeBSD.org> | 2007-10-08 23:40:40 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2007-10-08 23:40:40 +0000 |
commit | 065472edb7ad38efc5b5b56f270ee332f76fea01 (patch) | |
tree | 6f6f1dd8c8cb19ffecdc7da1be142d2a731fda8e /sys/kern | |
parent | 5e4673913f615ecdd71ea60704f3cf47f6814fb7 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/kern_synch.c | 9 |
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); } |