* DevNotes: Add entry cgf-000017.
* _cygtls.cc (_cygtls::call2): Use new exit_thread function in place of ExitThread. * miscfuncs.cc (thread_wrapper): Ditto. * thread.cc (pthread::exit): Ditto. (pthread_mutex::unlock): Set tid to NULL rather than 0. (pthread_spinlock::unlock): Ditto. * pinfo.cc (commune_process): Actually call lock_process constructor. * sigproc.cc (exit_thread): New function. (wait_sig): Handle __SIGTHREADEXIT case. Don't just block rather than returning from this function. * sigproc.h (__SIGTHREADEXIT): New enum. (exit_thread): Declare. * sync.cc (muto::release): Accept a tls command-line argument. * sync.h (muto::release): Accept a tls command-line parameter. Default to &_my_tls.
This commit is contained in:
@@ -33,7 +33,7 @@ public:
|
||||
~muto ()
|
||||
#endif
|
||||
int acquire (DWORD ms = INFINITE) __attribute__ ((regparm (2))); /* Acquire the lock. */
|
||||
int release () __attribute__ ((regparm (1))); /* Release the lock. */
|
||||
int release (_cygtls * = &_my_tls) __attribute__ ((regparm (2))); /* Release the lock. */
|
||||
|
||||
bool acquired () __attribute__ ((regparm (1)));
|
||||
void upforgrabs () {tls = this;} // just set to an invalid address
|
||||
@@ -60,6 +60,7 @@ public:
|
||||
if (!skip_unlock)
|
||||
locker.release ();
|
||||
}
|
||||
static void force_release (_cygtls *tid) {locker.release (tid);}
|
||||
friend class dtable;
|
||||
friend class fhandler_fifo;
|
||||
};
|
||||
|
Reference in New Issue
Block a user