From e54818fa1513ff6802c929d27f01df2257d8c153 Mon Sep 17 00:00:00 2001 From: rpj Date: Sun, 26 Jul 1998 11:25:32 +0000 Subject: Sun Jul 26 13:06:12 1998 Ross Johnson * exit.c (_pthread_exit): New function. Called from pthread_exit() and _pthread_start_call() to exit the thread. It allows an extra argument which is the return code passed to _endthreadex(). * create.c (_pthread_start_call): Change pthread_exit() call to _pthread_exit() call. --- ChangeLog | 7 +++++++ create.c | 3 ++- exit.c | 10 ++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e9a57c..ca94e5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ Sun Jul 26 13:06:12 1998 Ross Johnson + * exit.c (_pthread_exit): New function. Called from pthread_exit() + and _pthread_start_call() to exit the thread. It allows an extra + argument which is the return code passed to _endthreadex(). + + * create.c (_pthread_start_call): Change pthread_exit() call to + _pthread_exit() call. + * exit.c (_pthread_vacuum): Add thread entry deletion code moved from _pthread_start_call(). See next item. (pthread_exit): Remove longjmp(). Add mutex lock around thread table diff --git a/create.c b/create.c index 91b81a4..dc54c37 100644 --- a/create.c +++ b/create.c @@ -40,7 +40,8 @@ _pthread_start_call(void * us_arg) ret = (*func)(arg); - pthread_exit(NULL); + _pthread_exit(NULL, ret); + /* Never Reached */ } diff --git a/exit.c b/exit.c index 25fc678..37b5595 100644 --- a/exit.c +++ b/exit.c @@ -46,7 +46,7 @@ _pthread_vacuum(void) } void -pthread_exit(void * value) +_pthread_exit(void * value, int return_code) { _pthread_threads_thread_t * us = _PTHREAD_THIS; @@ -62,5 +62,11 @@ pthread_exit(void * value) _pthread_vacuum(); - _endthreadex(0); + _endthreadex(return_code); +} + +void +pthread_exit(void * value) +{ + _pthread_exit(value, 0); } -- cgit v1.2.3