summaryrefslogtreecommitdiff
path: root/pthread_setcancelstate.c
diff options
context:
space:
mode:
authorrpj <rpj>2004-11-03 01:08:41 +0000
committerrpj <rpj>2004-11-03 01:08:41 +0000
commitec8290acdaea21b16d98f1ef5d4ae8a28ab2109a (patch)
tree0bd3750ec1cc12594b6cfe69473e393da6ec101b /pthread_setcancelstate.c
parentcccaf0c2c82e78a72d69a4a50c872f308bed2f65 (diff)
Mutex, semaphore, thread ID, test suite changes - see ChangeLogs
Diffstat (limited to 'pthread_setcancelstate.c')
-rw-r--r--pthread_setcancelstate.c23
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);