summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dickens <christopher.a.dickens@gmail.com>2018-01-04 13:47:34 -0800
committerChris Dickens <christopher.a.dickens@gmail.com>2018-01-04 13:47:34 -0800
commitbb0a3e8c015b03a6262d4122a1d39f6c58261d98 (patch)
treea7dcd1bd62e05e8f297a95a958edf373e87f7553
parentf06c4f5b37178afbd8752799fe44080568c2b7fb (diff)
downloadlibusb-bb0a3e8c015b03a6262d4122a1d39f6c58261d98.tar.gz
POSIX: Improve threading abstraction as done in f06c4f5b
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r--libusb/os/threads_posix.h96
-rw-r--r--libusb/version_nano.h2
2 files changed, 71 insertions, 27 deletions
diff --git a/libusb/os/threads_posix.h b/libusb/os/threads_posix.h
index 7ec70b1..9f1ef94 100644
--- a/libusb/os/threads_posix.h
+++ b/libusb/os/threads_posix.h
@@ -26,32 +26,76 @@
#include <sys/time.h>
#endif
-#define usbi_mutex_static_t pthread_mutex_t
-#define USBI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
-#define usbi_mutex_static_lock pthread_mutex_lock
-#define usbi_mutex_static_unlock pthread_mutex_unlock
-
-#define usbi_mutex_t pthread_mutex_t
-#define usbi_mutex_init(mutex) pthread_mutex_init((mutex), NULL)
-#define usbi_mutex_lock pthread_mutex_lock
-#define usbi_mutex_unlock pthread_mutex_unlock
-#define usbi_mutex_trylock pthread_mutex_trylock
-#define usbi_mutex_destroy pthread_mutex_destroy
-
-#define usbi_cond_t pthread_cond_t
-#define usbi_cond_init(cond) pthread_cond_init((cond), NULL)
-#define usbi_cond_wait pthread_cond_wait
-#define usbi_cond_broadcast pthread_cond_broadcast
-#define usbi_cond_destroy pthread_cond_destroy
-
-#define usbi_tls_key_t pthread_key_t
-#define usbi_tls_key_create(key) pthread_key_create((key), NULL)
-#define usbi_tls_key_get pthread_getspecific
-#define usbi_tls_key_set pthread_setspecific
-#define usbi_tls_key_delete pthread_key_delete
-
-int usbi_cond_timedwait(pthread_cond_t *cond,
- pthread_mutex_t *mutex, const struct timeval *tv);
+#define USBI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
+typedef pthread_mutex_t usbi_mutex_static_t;
+static inline void usbi_mutex_static_lock(usbi_mutex_static_t *mutex)
+{
+ (void)pthread_mutex_lock(mutex);
+}
+static inline void usbi_mutex_static_unlock(usbi_mutex_static_t *mutex)
+{
+ (void)pthread_mutex_unlock(mutex);
+}
+
+typedef pthread_mutex_t usbi_mutex_t;
+static inline int usbi_mutex_init(usbi_mutex_t *mutex)
+{
+ return pthread_mutex_init(mutex, NULL);
+}
+static inline void usbi_mutex_lock(usbi_mutex_t *mutex)
+{
+ (void)pthread_mutex_lock(mutex);
+}
+static inline void usbi_mutex_unlock(usbi_mutex_t *mutex)
+{
+ (void)pthread_mutex_unlock(mutex);
+}
+static inline int usbi_mutex_trylock(usbi_mutex_t *mutex)
+{
+ return pthread_mutex_trylock(mutex);
+}
+static inline void usbi_mutex_destroy(usbi_mutex_t *mutex)
+{
+ (void)pthread_mutex_destroy(mutex);
+}
+
+typedef pthread_cond_t usbi_cond_t;
+static inline void usbi_cond_init(pthread_cond_t *cond)
+{
+ (void)pthread_cond_init(cond, NULL);
+}
+static inline int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex)
+{
+ return pthread_cond_wait(cond, mutex);
+}
+int usbi_cond_timedwait(usbi_cond_t *cond,
+ usbi_mutex_t *mutex, const struct timeval *tv);
+static inline void usbi_cond_broadcast(usbi_cond_t *cond)
+{
+ (void)pthread_cond_broadcast(cond);
+}
+static inline void usbi_cond_destroy(usbi_cond_t *cond)
+{
+ (void)pthread_cond_destroy(cond);
+}
+
+typedef pthread_key_t usbi_tls_key_t;
+static inline void usbi_tls_key_create(usbi_tls_key_t *key)
+{
+ (void)pthread_key_create(key, NULL);
+}
+static inline void *usbi_tls_key_get(usbi_tls_key_t key)
+{
+ return pthread_getspecific(key);
+}
+static inline void usbi_tls_key_set(usbi_tls_key_t key, void *ptr)
+{
+ (void)pthread_setspecific(key, ptr);
+}
+static inline void usbi_tls_key_delete(usbi_tls_key_t key)
+{
+ (void)pthread_key_delete(key);
+}
int usbi_get_tid(void);
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index 3272eae..9d709da 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11251
+#define LIBUSB_NANO 11252