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_setcancelstate.c | |
parent | cccaf0c2c82e78a72d69a4a50c872f308bed2f65 (diff) |
Mutex, semaphore, thread ID, test suite changes - see ChangeLogs
Diffstat (limited to 'pthread_setcancelstate.c')
-rw-r--r-- | pthread_setcancelstate.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/pthread_setcancelstate.c b/pthread_setcancelstate.c index 4432a6f..337fb58 100644 --- a/pthread_setcancelstate.c +++ b/pthread_setcancelstate.c @@ -81,8 +81,9 @@ pthread_setcancelstate (int state, int *oldstate) { int result = 0; pthread_t self = pthread_self (); + ptw32_thread_t * sp = (ptw32_thread_t *) self.p; - if (self == NULL + if (sp == NULL || (state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE)) { return EINVAL; @@ -91,32 +92,32 @@ pthread_setcancelstate (int state, int *oldstate) /* * Lock for async-cancel safety. */ - (void) pthread_mutex_lock (&self->cancelLock); + (void) pthread_mutex_lock (&sp->cancelLock); if (oldstate != NULL) { - *oldstate = self->cancelState; + *oldstate = sp->cancelState; } - self->cancelState = state; + sp->cancelState = state; /* * Check if there is a pending asynchronous cancel */ if (state == PTHREAD_CANCEL_ENABLE - && self->cancelType == PTHREAD_CANCEL_ASYNCHRONOUS - && WaitForSingleObject (self->cancelEvent, 0) == WAIT_OBJECT_0) + && sp->cancelType == PTHREAD_CANCEL_ASYNCHRONOUS + && WaitForSingleObject (sp->cancelEvent, 0) == WAIT_OBJECT_0) { - self->state = PThreadStateCanceling; - self->cancelState = PTHREAD_CANCEL_DISABLE; - ResetEvent (self->cancelEvent); - (void) pthread_mutex_unlock (&self->cancelLock); + sp->state = PThreadStateCanceling; + sp->cancelState = PTHREAD_CANCEL_DISABLE; + ResetEvent (sp->cancelEvent); + (void) pthread_mutex_unlock (&sp->cancelLock); ptw32_throw (PTW32_EPS_CANCEL); /* Never reached */ } - (void) pthread_mutex_unlock (&self->cancelLock); + (void) pthread_mutex_unlock (&sp->cancelLock); return (result); |