projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
work around a nasty bug in linux readv syscall
[musl]
/
src
/
thread
/
pthread_mutex_trylock.c
diff --git
a/src/thread/pthread_mutex_trylock.c
b/src/thread/pthread_mutex_trylock.c
index
f48aaad
..
50a815a
100644
(file)
--- a/
src/thread/pthread_mutex_trylock.c
+++ b/
src/thread/pthread_mutex_trylock.c
@@
-7,15
+7,15
@@
int pthread_mutex_trylock(pthread_mutex_t *m)
pthread_t self;
if (m->_m_type == PTHREAD_MUTEX_NORMAL)
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)
self = pthread_self();
tid = self->tid | 0x80000000;
if (m->_m_type >= 4) {
if (!self->robust_list.off)
- syscall
2(__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;
}
self->robust_list.off = (char*)&m->_m_lock-(char *)&m->_m_next;
self->robust_list.pending = &m->_m_next;
}