thr_create.c (178446) | thr_create.c (178647) |
---|---|
1/* 2 * Copyright (c) 2003 Daniel M. Eischen <deischen@gdeb.com> 3 * Copyright (c) 2005, David Xu <davidxu@freebsd.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * | 1/* 2 * Copyright (c) 2003 Daniel M. Eischen <deischen@gdeb.com> 3 * Copyright (c) 2005, David Xu <davidxu@freebsd.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 10 unchanged lines hidden (view full) --- 19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * |
27 * $FreeBSD: head/lib/libthr/thread/thr_create.c 178446 2008-04-23 21:06:51Z delphij $ | 27 * $FreeBSD: head/lib/libthr/thread/thr_create.c 178647 2008-04-29 03:58:18Z davidxu $ |
28 */ 29 30#include "namespace.h" 31#include <sys/types.h> 32#include <sys/rtprio.h> 33#include <sys/signalvar.h> 34#include <errno.h> 35#include <stdlib.h> --- 151 unchanged lines hidden (view full) --- 187 188 if (ret != 0) { 189 if (!locked) 190 THR_THREAD_LOCK(curthread, new_thread); 191 new_thread->state = PS_DEAD; 192 new_thread->tid = TID_TERMINATED; 193 if (new_thread->flags & THR_FLAGS_NEED_SUSPEND) { 194 new_thread->cycle++; | 28 */ 29 30#include "namespace.h" 31#include <sys/types.h> 32#include <sys/rtprio.h> 33#include <sys/signalvar.h> 34#include <errno.h> 35#include <stdlib.h> --- 151 unchanged lines hidden (view full) --- 187 188 if (ret != 0) { 189 if (!locked) 190 THR_THREAD_LOCK(curthread, new_thread); 191 new_thread->state = PS_DEAD; 192 new_thread->tid = TID_TERMINATED; 193 if (new_thread->flags & THR_FLAGS_NEED_SUSPEND) { 194 new_thread->cycle++; |
195 _thr_umtx_wake(&new_thread->cycle, INT_MAX); | 195 _thr_umtx_wake(&new_thread->cycle, INT_MAX, 0); |
196 } 197 THR_THREAD_UNLOCK(curthread, new_thread); 198 THREAD_LIST_LOCK(curthread); 199 _thread_active_threads--; 200 new_thread->tlflags |= TLFLAGS_DETACHED; 201 _thr_ref_delete_unlocked(curthread, new_thread); 202 THREAD_LIST_UNLOCK(curthread); 203 } else if (locked) { --- 89 unchanged lines hidden --- | 196 } 197 THR_THREAD_UNLOCK(curthread, new_thread); 198 THREAD_LIST_LOCK(curthread); 199 _thread_active_threads--; 200 new_thread->tlflags |= TLFLAGS_DETACHED; 201 _thr_ref_delete_unlocked(curthread, new_thread); 202 THREAD_LIST_UNLOCK(curthread); 203 } else if (locked) { --- 89 unchanged lines hidden --- |