POSIX: Improve threading abstraction as done in f06c4f5b
authorChris Dickens <christopher.a.dickens@gmail.com>
Thu, 4 Jan 2018 21:47:34 +0000 (13:47 -0800)
committerChris Dickens <christopher.a.dickens@gmail.com>
Thu, 4 Jan 2018 21:47:34 +0000 (13:47 -0800)
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb/os/threads_posix.h
libusb/version_nano.h

index 7ec70b1..9f1ef94 100644 (file)
 #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);
 
index 3272eae..9d709da 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 11251
+#define LIBUSB_NANO 11252