thr_yield.c (115080) | thr_yield.c (117706) |
---|---|
1/* 2 * Copyright (c) 1995 John Birrell <jb@cimlogic.com.au>. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * | 1/* 2 * Copyright (c) 1995 John Birrell <jb@cimlogic.com.au>. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/lib/libkse/thread/thr_yield.c 115080 2003-05-16 19:58:30Z deischen $ | 32 * $FreeBSD: head/lib/libkse/thread/thr_yield.c 117706 2003-07-17 23:02:30Z davidxu $ |
33 */ 34#include <pthread.h> 35#include "thr_private.h" 36 37__weak_reference(_sched_yield, sched_yield); 38__weak_reference(_pthread_yield, pthread_yield); 39 40int 41_sched_yield(void) 42{ 43 struct pthread *curthread = _get_curthread(); 44 | 33 */ 34#include <pthread.h> 35#include "thr_private.h" 36 37__weak_reference(_sched_yield, sched_yield); 38__weak_reference(_pthread_yield, pthread_yield); 39 40int 41_sched_yield(void) 42{ 43 struct pthread *curthread = _get_curthread(); 44 |
45 if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) 46 return (__sys_sched_yield()); 47 |
|
45 /* Reset the accumulated time slice value for the current thread: */ 46 curthread->slice_usec = -1; 47 48 /* Schedule the next thread: */ 49 _thr_sched_switch(curthread); 50 /* Always return no error. */ 51 return(0); 52} 53 54/* Draft 4 yield */ 55void 56_pthread_yield(void) 57{ 58 struct pthread *curthread = _get_curthread(); 59 | 48 /* Reset the accumulated time slice value for the current thread: */ 49 curthread->slice_usec = -1; 50 51 /* Schedule the next thread: */ 52 _thr_sched_switch(curthread); 53 /* Always return no error. */ 54 return(0); 55} 56 57/* Draft 4 yield */ 58void 59_pthread_yield(void) 60{ 61 struct pthread *curthread = _get_curthread(); 62 |
63 if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { 64 __sys_sched_yield(); 65 return; 66 } 67 |
|
60 /* Reset the accumulated time slice value for the current thread: */ 61 curthread->slice_usec = -1; 62 63 /* Schedule the next thread: */ 64 _thr_sched_switch(curthread); 65} | 68 /* Reset the accumulated time slice value for the current thread: */ 69 curthread->slice_usec = -1; 70 71 /* Schedule the next thread: */ 72 _thr_sched_switch(curthread); 73} |