use bss instead of mmap for main thread's pthread thread-specific data
[oweals/musl.git] / src / thread / pthread_mutex_trylock.c
index f48aaadec3c761e83b42ad4052417972d8b5c30d..50a815a5fbf4dc22322347fa2ab4aaaeb98348b2 100644 (file)
@@ -7,15 +7,15 @@ int pthread_mutex_trylock(pthread_mutex_t *m)
        pthread_t self;
 
        if (m->_m_type == PTHREAD_MUTEX_NORMAL)
-               return (m->_m_lock || a_swap(&m->_m_lock, 1)) ? EBUSY : 0;
+               return -a_swap(&m->_m_lock, 1) & EBUSY;
 
        self = pthread_self();
        tid = self->tid | 0x80000000;
 
        if (m->_m_type >= 4) {
                if (!self->robust_list.off)
-                       syscall2(__NR_set_robust_list,
-                               (long)&self->robust_list, 3*sizeof(long));
+                       syscall(SYS_set_robust_list,
+                               &self->robust_list, 3*sizeof(long));
                self->robust_list.off = (char*)&m->_m_lock-(char *)&m->_m_next;
                self->robust_list.pending = &m->_m_next;
        }