diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-06-22 23:55:27 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-06-22 23:55:27 +0000 |
commit | 6162364368b2092b2bd7b1ba26366ba9a841787a (patch) | |
tree | 484fb1a48e0bed5865f53b53e012475efec09fc5 /nptl/pthread_mutex_lock.c | |
parent | b758b9cb108f37e65278f4488fad083300022ba7 (diff) | |
download | glibc-6162364368b2092b2bd7b1ba26366ba9a841787a.tar.gz |
Update.
2003-06-22 Ulrich Drepper <drepper@redhat.com>
* pthreadP.h (__pthread_mutex_init_internal): Mark hidden.
(__pthread_mutex_lock_internal): Likewise.
(__pthread_mutex_unlock_internal): Likewise.
(__pthread_mutex_unlock_usercnt): Declare.
* pthread_mutex_destroy.c: Always fail if used in any way.
* pthread_mutex_init.c: Update comment.
* pthread_mutex_lock.c: If NO_INCR is not defined adjust __nusers.
* pthread_mutex_timedlock.c: Adjust __nusers.
* pthread_mutex_trylock.c: Adjust __nusers.
* pthread_mutex_unlock.c: Old code is in __pthread_mutex_unlock_usercnt
and public interfaces are wrapper with pass additional parameter.
__pthread_mutex_unlock_usercnt does not adjust __nusers if second
parameter zero.
* tst-mutex8.c: New file.
* Makefile (tests): Add tst-mutex8.
* sysdeps/pthread/pthread_cond_timedwait.c: Call
__pthread_mutex_unlock_usercnt.
* sysdeps/pthread/pthread_cond_wait.c: Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Define NO_INCR.
* sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
Add __nusers.
* sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
* pthread_mutex_lock.c: Don't store THREAD_ID in __owner, use TID.
* pthread_mutex_timedlock.c: Likewise.
* pthread_mutex_trylock.c: Adjust __nusers.
* pthread_mutex_unlock.c: Compare with TID not THREAD_ID.
* tst-mutex9.c: New file.
* Makefile (tests): Add tst-mutex9.
* sysdeps/i386/tls.h: Remove THREAD_ID definition.
* sysdeps/ia64/tls.h: Likewise.
* sysdeps/powerpc/tls.h: Likewise.
* sysdeps/s390/tls.h: Likewise.
* sysdeps/sh/tls.h: Likewise.
* sysdeps/x86_64/tls.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
Change type of __owner.
* sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
Diffstat (limited to 'nptl/pthread_mutex_lock.c')
-rw-r--r-- | nptl/pthread_mutex_lock.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index 4fdb13718c..9c61aa75f6 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -31,7 +31,7 @@ int __pthread_mutex_lock (mutex) pthread_mutex_t *mutex; { - struct pthread *id = THREAD_ID; + pid_t id = THREAD_GETMEM (THREAD_SELF, tid); switch (__builtin_expect (mutex->__data.__kind, PTHREAD_MUTEX_TIMED_NP)) { @@ -55,6 +55,9 @@ __pthread_mutex_lock (mutex) /* Record the ownership. */ mutex->__data.__owner = id; mutex->__data.__count = 1; +#ifndef NO_INCR + ++mutex->__data.__nusers; +#endif } break; @@ -74,6 +77,9 @@ __pthread_mutex_lock (mutex) LLL_MUTEX_LOCK (mutex->__data.__lock); /* Record the ownership. */ mutex->__data.__owner = id; +#ifndef NO_INCR + ++mutex->__data.__nusers; +#endif break; } |