summaryrefslogtreecommitdiff
path: root/include/ouroboros/pthread.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ouroboros/pthread.h')
-rw-r--r--include/ouroboros/pthread.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/include/ouroboros/pthread.h b/include/ouroboros/pthread.h
index 735557d2..7044cb5e 100644
--- a/include/ouroboros/pthread.h
+++ b/include/ouroboros/pthread.h
@@ -1,5 +1,5 @@
/*
- * Ouroboros - Copyright (C) 2016 - 2021
+ * Ouroboros - Copyright (C) 2016 - 2024
*
* Useful cleanup functions for pthreads
*
@@ -20,20 +20,32 @@
* Foundation, Inc., http://www.fsf.org/about/contact/.
*/
-#ifndef OUROBOROS_PTHREAD_H
-#define OUROBOROS_PTHREAD_H
+#ifndef OUROBOROS_LIB_PTHREAD_H
+#define OUROBOROS_LIB_PTHREAD_H
#include <pthread.h>
+static int __attribute__((unused)) __timedwait(pthread_cond_t * cond,
+ pthread_mutex_t * mtx,
+ const struct timespec * abstime)
+{
+ if (abstime == NULL)
+ return pthread_cond_wait(cond, mtx);
+
+ return pthread_cond_timedwait(cond, mtx, abstime);
+}
+
+#if defined (_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L
/* various cleanup functions for pthread_cleanup_push */
static void __attribute__((unused)) __cleanup_rwlock_unlock(void * rwlock)
{
pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
}
+#endif
static void __attribute__((unused)) __cleanup_mutex_unlock(void * mutex)
{
pthread_mutex_unlock((pthread_mutex_t *) mutex);
}
-#endif /* OUROBOROS_PTHREAD_H */
+#endif /* OUROBOROS_LIB_PTHREAD_H */