diff options
author | rpj <rpj> | 2004-11-03 01:08:41 +0000 |
---|---|---|
committer | rpj <rpj> | 2004-11-03 01:08:41 +0000 |
commit | ec8290acdaea21b16d98f1ef5d4ae8a28ab2109a (patch) | |
tree | 0bd3750ec1cc12594b6cfe69473e393da6ec101b /pthread_join.c | |
parent | cccaf0c2c82e78a72d69a4a50c872f308bed2f65 (diff) |
Mutex, semaphore, thread ID, test suite changes - see ChangeLogs
Diffstat (limited to 'pthread_join.c')
-rw-r--r-- | pthread_join.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/pthread_join.c b/pthread_join.c index 89ee1a5..ba2d3da 100644 --- a/pthread_join.c +++ b/pthread_join.c @@ -82,6 +82,7 @@ pthread_join (pthread_t thread, void **value_ptr) { int result; pthread_t self; + ptw32_thread_t * tp = (ptw32_thread_t *) thread.p; /* * Possibilities for the target thread on entry to pthread_join(): @@ -134,13 +135,13 @@ pthread_join (pthread_t thread, void **value_ptr) * so that we can use the reuse_lock to ensure the thread isn't destroyed * and reused before we've finished with the POSIX thread struct. */ - if (NULL == thread - || NULL == thread->threadH - || THREAD_PRIORITY_ERROR_RETURN == GetThreadPriority (thread->threadH)) + if (tp == NULL + || NULL == tp->threadH + || THREAD_PRIORITY_ERROR_RETURN == GetThreadPriority (tp->threadH)) { result = ESRCH; } - else if (PTHREAD_CREATE_DETACHED == thread->detachState) + else if (PTHREAD_CREATE_DETACHED == tp->detachState) { result = EINVAL; } @@ -152,7 +153,9 @@ pthread_join (pthread_t thread, void **value_ptr) LeaveCriticalSection (&ptw32_thread_reuse_lock); - if (NULL == (self = pthread_self ())) + self = pthread_self(); + + if (NULL == self.p) { result = ENOENT; } @@ -169,7 +172,7 @@ pthread_join (pthread_t thread, void **value_ptr) * pthreadCancelableWait will not return if we * are canceled. */ - result = pthreadCancelableWait (thread->threadH); + result = pthreadCancelableWait (tp->threadH); if (0 == result) { @@ -177,7 +180,7 @@ pthread_join (pthread_t thread, void **value_ptr) #if ! defined (__MINGW32__) || defined (__MSVCRT__) || defined (__DMC__) if (value_ptr != NULL - && !GetExitCodeThread (thread->threadH, (LPDWORD) value_ptr)) + && !GetExitCodeThread (tp->threadH, (LPDWORD) value_ptr)) { result = ESRCH; } @@ -198,7 +201,7 @@ pthread_join (pthread_t thread, void **value_ptr) */ if (value_ptr != NULL) { - *value_ptr = thread->exitStatus; + *value_ptr = tp->exitStatus; } /* |