path: root/src/thread/mtx_trylock.c
diff options
authorRich Felker <>2018-09-07 16:20:39 -0400
committerRich Felker <>2018-09-12 14:34:29 -0400
commit60056a8010c3dbaabd713f7a3e4f2963bb921a1b (patch)
treea78579a799af861818ab9831beb945ddfd8970bd /src/thread/mtx_trylock.c
parentc98bf5b8691b21373ff8d9698e89a75acdefdc75 (diff)
for c11 mtx and cnd functions, use externally consistent type names
despite looking like undefined behavior, the affected code is correct both before and after this patch. the pairs mtx_t and pthread_mutex_t, and cnd_t and pthread_cond_t, are not mutually compatible within a single translation unit (because they are distinct untagged aggregate instances), but they are compatible with an object of either type from another translation unit (6.2.7 ΒΆ1), and therefore a given translation unit can choose which one it wants to use. in the interest of being able to move declarations out of source files to headers that facilitate checking, use the pthread type names in declaring the namespace-safe versions of the pthread functions and cast the argument pointer types when calling them.
Diffstat (limited to 'src/thread/mtx_trylock.c')
1 files changed, 2 insertions, 2 deletions
diff --git a/src/thread/mtx_trylock.c b/src/thread/mtx_trylock.c
index 61e7694e..8d1fb07c 100644
--- a/src/thread/mtx_trylock.c
+++ b/src/thread/mtx_trylock.c
@@ -1,14 +1,14 @@
#include "pthread_impl.h"
#include <threads.h>
-int __pthread_mutex_trylock(mtx_t *);
+int __pthread_mutex_trylock(pthread_mutex_t *);
int mtx_trylock(mtx_t *m)
if (m->_m_type == PTHREAD_MUTEX_NORMAL)
return (a_cas(&m->_m_lock, 0, EBUSY) & EBUSY) ? thrd_busy : thrd_success;
- int ret = __pthread_mutex_trylock(m);
+ int ret = __pthread_mutex_trylock((pthread_mutex_t *)m);
switch (ret) {
default: return thrd_error;
case 0: return thrd_success;