summaryrefslogtreecommitdiffstats
path: root/contrib/xz/src/common/mythread.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/xz/src/common/mythread.h')
-rw-r--r--contrib/xz/src/common/mythread.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/contrib/xz/src/common/mythread.h b/contrib/xz/src/common/mythread.h
new file mode 100644
index 0000000..476c2fc
--- /dev/null
+++ b/contrib/xz/src/common/mythread.h
@@ -0,0 +1,42 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file mythread.h
+/// \brief Wrappers for threads
+//
+// Author: Lasse Collin
+//
+// This file has been put into the public domain.
+// You can do whatever you want with this file.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+
+
+#ifdef HAVE_PTHREAD
+# include <pthread.h>
+
+# define mythread_once(func) \
+ do { \
+ static pthread_once_t once_ = PTHREAD_ONCE_INIT; \
+ pthread_once(&once_, &func); \
+ } while (0)
+
+# define mythread_sigmask(how, set, oset) \
+ pthread_sigmask(how, set, oset)
+
+#else
+
+# define mythread_once(func) \
+ do { \
+ static bool once_ = false; \
+ if (!once_) { \
+ func(); \
+ once_ = true; \
+ } \
+ } while (0)
+
+# define mythread_sigmask(how, set, oset) \
+ sigprocmask(how, set, oset)
+
+#endif
OpenPOWER on IntegriCloud