summaryrefslogtreecommitdiff
path: root/exit.c
diff options
context:
space:
mode:
authorrpj <rpj>2002-02-27 22:53:15 +0000
committerrpj <rpj>2002-02-27 22:53:15 +0000
commit8200f6ff1edca15756a22e6359f20836c4b5425b (patch)
treeec67536235acd2694da7cae80fdef05ccfc27099 /exit.c
parent586f6933530d1e0c3bf0d2b1fec2377056340107 (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.c60
1 files changed, 1 insertions, 59 deletions
diff --git a/exit.c b/exit.c
index 2da0e1e..b181077 100644
--- a/exit.c
+++ b/exit.c
@@ -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"