diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 8cdd9fe14d7..71d5c27bd3b 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); }