Deleted Added
full compact
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}