summaryrefslogtreecommitdiffstats
path: root/unix/tclUnixThrd.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2025-08-25 09:51:34 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2025-08-25 09:51:34 (GMT)
commit67082d334ca8f3fea74291a3b3630304ce7ade4d (patch)
treebe86d71f4b0efba1c3a0bb5e0ebfe178da8d17ae /unix/tclUnixThrd.c
parent1f77f7ed50a82355d49564caf9ae32636ea6869e (diff)
downloadtcl-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.c42
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,