diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64')
3 files changed, 6 insertions, 3 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index b2919ab4c6..ed3050e636 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -51,7 +51,8 @@ typedef union { int __lock; unsigned int __count; - struct pthread *__owner; + int __owner; + unsigned int __nusers; /* KIND must stay at this position in the structure to maintain binary compatibility. */ int __kind; diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S index b64953ba83..b2b4449554 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S @@ -91,7 +91,8 @@ __pthread_cond_timedwait: /* Unlock the mutex. */ 2: movq 16(%rsp), %rdi - callq __pthread_mutex_unlock_internal + xorq %rsi, %rsi + callq __pthread_mutex_unlock_usercnt testl %eax, %eax jne 16f diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S index 2c6c6ce338..3942faf1ad 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S @@ -136,7 +136,8 @@ __pthread_cond_wait: /* Unlock the mutex. */ 2: movq 16(%rsp), %rdi - callq __pthread_mutex_unlock_internal + xorq %rsi, %rsi + callq __pthread_mutex_unlock_usercnt testl %eax, %eax jne 12f |