summaryrefslogtreecommitdiff
path: root/lib/libpthread/thread
diff options
context:
space:
mode:
authorDavid Xu <davidxu@FreeBSD.org>2003-09-04 05:24:53 +0000
committerDavid Xu <davidxu@FreeBSD.org>2003-09-04 05:24:53 +0000
commit0318c367fcccd60cb24f418d13863dbd25d65a67 (patch)
tree578790928fa058fe007e5decec376b20dbbe76af /lib/libpthread/thread
parenteb7f25e17ed39d075cb238bf2900b1b7bf68a023 (diff)
Notes
Diffstat (limited to 'lib/libpthread/thread')
-rw-r--r--lib/libpthread/thread/thr_kern.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c
index f9a17a5c6745..5ed144ae232c 100644
--- a/lib/libpthread/thread/thr_kern.c
+++ b/lib/libpthread/thread/thr_kern.c
@@ -1246,7 +1246,6 @@ thr_cleanup(struct kse *curkse, struct pthread *thread)
KSE_SCHED_UNLOCK(curkse, curkse->k_kseg);
DBG_MSG("Adding thread %p to GC list\n", thread);
KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock);
- THR_GCLIST_ADD(thread);
/* Use thread_list_lock */
active_threads--;
#ifdef SYSTEM_SCOPE_ONLY
@@ -1255,8 +1254,12 @@ thr_cleanup(struct kse *curkse, struct pthread *thread)
if (active_threads == 1) {
#endif
KSE_LOCK_RELEASE(curkse, &_thread_list_lock);
+ /* Possible use a signalcontext wrapper to call exit ? */
+ curkse->k_curthread = thread;
+ _tcb_set(curkse->k_kcb, thread->tcb);
exit(0);
}
+ THR_GCLIST_ADD(thread);
KSE_LOCK_RELEASE(curkse, &_thread_list_lock);
if (sys_scope) {
/*