From 8200f6ff1edca15756a22e6359f20836c4b5425b Mon Sep 17 00:00:00 2001 From: rpj Date: Wed, 27 Feb 2002 22:53:15 +0000 Subject: * exception3.c (terminateFunction): For MSVC++, call exit() rather than pthread_exit(). Add comments to explain why. * rwlock2_t.c: New test. * rwlock3_t.c: New test. * rwlock4_t.c: New test. * rwlock5_t.c: New test. * rwlock6_t.c: New test. * rwlock6_t2.c: New test. * rwlock6.c (main): Swap thread and result variables to correspond to actual thread functions. * rwlock1.c: Change test description comment to correspond to the actual test. --- exit.c | 60 +----------------------------------------------------------- 1 file changed, 1 insertion(+), 59 deletions(-) (limited to 'exit.c') diff --git a/exit.c b/exit.c index 2da0e1e..b181077 100644 --- a/exit.c +++ b/exit.c @@ -41,62 +41,4 @@ # include #endif -void -pthread_exit (void *value_ptr) - /* - * ------------------------------------------------------ - * DOCPUBLIC - * This function terminates the calling thread, returning - * the value 'value_ptr' to any joining thread. - * - * PARAMETERS - * value_ptr - * a generic data value (i.e. not the address of a value) - * - * - * DESCRIPTION - * This function terminates the calling thread, returning - * the value 'value_ptr' to any joining thread. - * NOTE: thread should be joinable. - * - * RESULTS - * N/A - * - * ------------------------------------------------------ - */ -{ - pthread_t self; - - /* If the current thread is implicit it was not started through - pthread_create(), therefore we cleanup and end the thread - here. Otherwise we raise an exception to unwind the exception - stack. The exception will be caught by ptw32_threadStart(), - which will cleanup and end the thread for us. - */ - - self = (pthread_t) pthread_getspecific (ptw32_selfThreadKey); -#ifdef _UWIN - if(--pthread_count <= 0) - exit((int)value_ptr); -#endif - - if (self == NULL || self->implicit) - { - ptw32_callUserDestroyRoutines(self); - -#if ! defined (__MINGW32__) || defined (__MSVCRT__) - _endthreadex ((unsigned) value_ptr); -#else - _endthread (); -#endif - - /* Never reached */ - } - - self->exitStatus = value_ptr; - - ptw32_throw(PTW32_EPS_EXIT); - - /* Never reached. */ - -} +#include "pthread_exit.c" -- cgit v1.2.3