diff options
author | rpj <rpj> | 2002-02-27 22:53:15 +0000 |
---|---|---|
committer | rpj <rpj> | 2002-02-27 22:53:15 +0000 |
commit | 8200f6ff1edca15756a22e6359f20836c4b5425b (patch) | |
tree | ec67536235acd2694da7cae80fdef05ccfc27099 /exit.c | |
parent | 586f6933530d1e0c3bf0d2b1fec2377056340107 (diff) |
* 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.
Diffstat (limited to 'exit.c')
-rw-r--r-- | exit.c | 60 |
1 files changed, 1 insertions, 59 deletions
@@ -41,62 +41,4 @@ # include <process.h> #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" |