diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-08-25 09:51:34 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-08-25 09:51:34 (GMT) |
| commit | 67082d334ca8f3fea74291a3b3630304ce7ade4d (patch) | |
| tree | be86d71f4b0efba1c3a0bb5e0ebfe178da8d17ae /unix/tclUnixThrd.c | |
| parent | 1f77f7ed50a82355d49564caf9ae32636ea6869e (diff) | |
| download | tcl-67082d334ca8f3fea74291a3b3630304ce7ade4d.zip tcl-67082d334ca8f3fea74291a3b3630304ce7ade4d.tar.gz tcl-67082d334ca8f3fea74291a3b3630304ce7ade4d.tar.bz2 | |
Eliminate all usage of HAVE_DECL_PTHREAD_MUTEX_RECURSIVE
Diffstat (limited to 'unix/tclUnixThrd.c')
| -rw-r--r-- | unix/tclUnixThrd.c | 42 |
1 files changed, 5 insertions, 37 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index 04e1747..c35316a 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -61,40 +61,9 @@ *---------------------------------------------------------------------- */ -#ifndef HAVE_DECL_PTHREAD_MUTEX_RECURSIVE -#define HAVE_DECL_PTHREAD_MUTEX_RECURSIVE 0 -#endif - -#if HAVE_DECL_PTHREAD_MUTEX_RECURSIVE -/* - * Pthread has native reentrant (AKA recursive) mutexes. Use them for - * Tcl_Mutex. - */ - -typedef pthread_mutex_t PMutex; - -static void -PMutexInit( - PMutex *pmutexPtr) -{ - pthread_mutexattr_t attr; - - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(pmutexPtr, &attr); -} - -#define PMutexDestroy pthread_mutex_destroy -#define PMutexLock pthread_mutex_lock -#define PMutexUnlock pthread_mutex_unlock -#define PCondWait pthread_cond_wait -#define PCondTimedWait pthread_cond_timedwait - -#else /* !HAVE_PTHREAD_MUTEX_RECURSIVE */ - /* - * No native support for reentrant mutexes. Emulate them with regular mutexes - * and thread-local counters. + * No correct native support for reentrant mutexes. Emulate them with regular mutexes + * and threadlocal counters. */ typedef struct PMutex { @@ -150,7 +119,7 @@ PCondWait( int counter = pmutexPtr->counter; pmutexPtr->thread = 0; - pmutexPtr->counter = 0; + pmutexPtr->counter = 0; pthread_cond_wait(pcondPtr, &pmutexPtr->mutex); pmutexPtr->thread = pthread_self(); pmutexPtr->counter = counter; @@ -165,12 +134,11 @@ PCondTimedWait( int counter = pmutexPtr->counter; pmutexPtr->thread = 0; - pmutexPtr->counter = 0; + pmutexPtr->counter = 0; pthread_cond_timedwait(pcondPtr, &pmutexPtr->mutex, ptime); pmutexPtr->thread = pthread_self(); - pmutexPtr->counter = counter; + pmutexPtr->counter = counter; } -#endif /* HAVE_PTHREAD_MUTEX_RECURSIVE */ /* * globalLock is used to serialize creation of mutexes, condition variables, |
