summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
Diffstat (limited to 'osdep')
-rw-r--r--osdep/threads.c11
-rw-r--r--osdep/threads.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/osdep/threads.c b/osdep/threads.c
index ac6dfbb0f0..0c31ffa40a 100644
--- a/osdep/threads.c
+++ b/osdep/threads.c
@@ -55,3 +55,14 @@ int mpthread_cond_timed_wait(pthread_cond_t *cond, pthread_mutex_t *mutex,
timespec_add_seconds(&ts, timeout);
return pthread_cond_timedwait(cond, mutex, &ts);
}
+
+// Helper to reduce boiler plate.
+int mpthread_mutex_init_recursive(pthread_mutex_t *mutex)
+{
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+ int r = pthread_mutex_init(mutex, &attr);
+ pthread_mutexattr_destroy(&attr);
+ return r;
+}
diff --git a/osdep/threads.h b/osdep/threads.h
index 7c9f041320..662f718f8c 100644
--- a/osdep/threads.h
+++ b/osdep/threads.h
@@ -6,4 +6,6 @@
int mpthread_cond_timed_wait(pthread_cond_t *cond, pthread_mutex_t *mutex,
double timeout);
+int mpthread_mutex_init_recursive(pthread_mutex_t *mutex);
+
#endif