diff options
author | davidxu <davidxu@FreeBSD.org> | 2003-08-18 03:58:29 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2003-08-18 03:58:29 +0000 |
commit | 3203dde90e7e2cb93d8cfb8292002c02bd4a32d7 (patch) | |
tree | e6cd1320cfc169c79d0f276a0d69df8a3e83fcd4 /lib/libpthread/thread/thr_yield.c | |
parent | cb79c715dd08db9a90224825647fda99a740a31f (diff) | |
download | FreeBSD-src-3203dde90e7e2cb93d8cfb8292002c02bd4a32d7.zip FreeBSD-src-3203dde90e7e2cb93d8cfb8292002c02bd4a32d7.tar.gz |
Treat initial thread as scope system thread when KSE mode is not activated
yet, so we can protect some locking code from being interrupted by signal
handling. When KSE mode is turned on, reset the thread flag to scope process
except we are running in 1:1 mode which we needn't turn it off.
Also remove some unused member variables in structure kse.
Tested by: deischen
Diffstat (limited to 'lib/libpthread/thread/thr_yield.c')
-rw-r--r-- | lib/libpthread/thread/thr_yield.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/libpthread/thread/thr_yield.c b/lib/libpthread/thread/thr_yield.c index 1133784..5c24113 100644 --- a/lib/libpthread/thread/thr_yield.c +++ b/lib/libpthread/thread/thr_yield.c @@ -42,7 +42,7 @@ _sched_yield(void) { struct pthread *curthread = _get_curthread(); - if (!_kse_isthreaded() || curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) + if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) return (__sys_sched_yield()); /* Reset the accumulated time slice value for the current thread: */ @@ -60,8 +60,7 @@ _pthread_yield(void) { struct pthread *curthread = _get_curthread(); - if (!_kse_isthreaded() || - curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { + if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { __sys_sched_yield(); return; } |