diff options
author | rpj <rpj> | 1999-10-30 09:17:28 +0000 |
---|---|---|
committer | rpj <rpj> | 1999-10-30 09:17:28 +0000 |
commit | 588b7f6616834651ea4062cf440e57a8a0cba25f (patch) | |
tree | 52851833a18a06ffadcca2e1c9dac08e9ec30d9a /cancel.c | |
parent | 9d592dbd51949858e2e787d16476420f10d2c9a5 (diff) |
./ChangeLog:
1999-10-30 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* create.c (pthread_create): Explicitly initialise thread state to
default values.
* cancel.c (pthread_setcancelstate): Check for NULL 'oldstate'
for compatibility with Solaris pthreads;
(pthread_setcanceltype): ditto:
- Erik Hensema <erik.hensema@group2000.nl>
1999-10-23 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* pthread.h (ctime_r): Fix incorrect argument "_tm"
- Erik Hensema <erik.hensema@group2000.nl>
tests/ChangeLog:
1999-10-30 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* cancel1.c: New. Test pthread_setcancelstate and
pthread_setcanceltype functions.
* eyal1.c (waste_time): Change calculation to avoid FP exception
on Aplhas
- Rich Peters <rpeters@micro-magic.com>
Diffstat (limited to 'cancel.c')
-rw-r--r-- | cancel.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -50,12 +50,16 @@ pthread_setcancelstate (int state, int *oldstate) * This function atomically sets the calling thread's * cancelability state to 'state' and returns the previous * cancelability state at the location referenced by - * 'oldstate' + * 'oldstate'. * * NOTES: * 1) Use to disable cancellation around 'atomic' code that * includes cancellation points * + * COMPATIBILITY ADDITIONS + * If 'oldstate' is NULL then the previous state is not returned + * but the function still succeeds. (Solaris) + * * RESULTS * 0 successfully set cancelability type, * EINVAL 'state' is invalid @@ -71,7 +75,11 @@ pthread_setcancelstate (int state, int *oldstate) state == PTHREAD_CANCEL_DISABLE)) { - *oldstate = self->cancelState; + if (oldstate != NULL) + { + *oldstate = self->cancelState; + } + self->cancelState = state; result = 0; @@ -116,6 +124,10 @@ pthread_setcanceltype (int type, int *oldtype) * 1) Use with caution; most code is not safe for use * with asynchronous cancelability. * + * COMPATIBILITY ADDITIONS + * If 'oldtype' is NULL then the previous type is not returned + * but the function still succeeds. (Solaris) + * * RESULTS * 0 successfully set cancelability type, * EINVAL 'type' is invalid @@ -131,7 +143,11 @@ pthread_setcanceltype (int type, int *oldtype) type == PTHREAD_CANCEL_ASYNCHRONOUS)) { - *oldtype = self->cancelType; + if (oldtype != NULL) + { + *oldtype = self->cancelType; + } + self->cancelType = type; result = 0; |