summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2006-06-15 06:41:57 +0000
committerdavidxu <davidxu@FreeBSD.org>2006-06-15 06:41:57 +0000
commit1689a257a3225150b95ea8241663b4784ac60e9f (patch)
tree21e23f5b29c5cac5587f9afb18714feb55c2ac2d
parenta4976ce4819998468c1e5c81438c6e85194d9eed (diff)
downloadFreeBSD-src-1689a257a3225150b95ea8241663b4784ac60e9f.zip
FreeBSD-src-1689a257a3225150b95ea8241663b4784ac60e9f.tar.gz
Use scheduler API sched_relinquish() to implement yield() syscall.
-rw-r--r--sys/kern/kern_synch.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index a5e50b1..717025b 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -542,14 +542,8 @@ synch_setup(dummy)
int
yield(struct thread *td, struct yield_args *uap)
{
- struct ksegrp *kg;
-
- kg = td->td_ksegrp;
mtx_assert(&Giant, MA_NOTOWNED);
- mtx_lock_spin(&sched_lock);
- sched_prio(td, PRI_MAX_TIMESHARE);
- mi_switch(SW_VOL, NULL);
- mtx_unlock_spin(&sched_lock);
- td->td_retval[0] = 0;
+ (void)uap;
+ sched_relinquish(td);
return (0);
}
OpenPOWER on IntegriCloud