diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-07-28 09:40:39 -0700 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-07-28 09:40:39 -0700 |
commit | b0948ffdcbdace63317297d3d3fe2556387dfcbd (patch) | |
tree | e06b5550fedc16845f23232aa87ee46a9e1a3571 /nptl/pthread_mutex_lock.c | |
parent | e73e694e38b7b222eec3ec5897eb507d88bb8928 (diff) | |
download | glibc-b0948ffdcbdace63317297d3d3fe2556387dfcbd.tar.gz glibc-b0948ffdcbdace63317297d3d3fe2556387dfcbd.tar.xz glibc-b0948ffdcbdace63317297d3d3fe2556387dfcbd.zip |
Fix bookkeeping in mutex when using requeue_pi.
Diffstat (limited to 'nptl/pthread_mutex_lock.c')
-rw-r--r-- | nptl/pthread_mutex_lock.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index 406e588fdb..50dc18803d 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2007, 2008 Free Software Foundation, Inc. +/* Copyright (C) 2002-2007, 2008, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -473,3 +473,22 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) strong_alias (__pthread_mutex_lock, pthread_mutex_lock) strong_alias (__pthread_mutex_lock, __pthread_mutex_lock_internal) #endif + + +#ifdef NO_INCR +void +__pthread_mutex_cond_lock_adjust (mutex) + pthread_mutex_t *mutex; +{ + assert ((mutex->__data.__kind & PTHREAD_MUTEX_PRIO_INHERIT_NP) != 0); + assert ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) == 0); + assert ((mutex->__data.__kind & PTHREAD_MUTEX_PSHARED_BIT) == 0); + + /* Record the ownership. */ + pid_t id = THREAD_GETMEM (THREAD_SELF, tid); + mutex->__data.__owner = id; + + if (mutex->__data.__kind == PTHREAD_MUTEX_PI_RECURSIVE_NP) + ++mutex->__data.__count; +} +#endif |