summaryrefslogtreecommitdiff
path: root/sysdeps/generic/pt-mutex-trylock.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic/pt-mutex-trylock.c')
-rw-r--r--sysdeps/generic/pt-mutex-trylock.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/sysdeps/generic/pt-mutex-trylock.c b/sysdeps/generic/pt-mutex-trylock.c
index 3c8cd03..7a54cc9 100644
--- a/sysdeps/generic/pt-mutex-trylock.c
+++ b/sysdeps/generic/pt-mutex-trylock.c
@@ -29,6 +29,12 @@ __pthread_mutex_trylock (struct __pthread_mutex *mutex)
{
int err;
struct __pthread *self;
+ const struct __pthread_mutexattr *attr = mutex->attr;
+
+ if (attr == __PTHREAD_ERRORCHECK_MUTEXATTR)
+ attr = &__pthread_errorcheck_mutexattr;
+ if (attr == __PTHREAD_RECURSIVE_MUTEXATTR)
+ attr = &__pthread_recursive_mutexattr;
__pthread_spin_lock (&mutex->__lock);
if (__pthread_spin_trylock (&mutex->__held) == 0)
@@ -48,8 +54,8 @@ __pthread_mutex_trylock (struct __pthread_mutex *mutex)
#endif
#endif
- if (mutex->attr)
- switch (mutex->attr->mutex_type)
+ if (attr)
+ switch (attr->mutex_type)
{
case PTHREAD_MUTEX_NORMAL:
break;
@@ -70,10 +76,10 @@ __pthread_mutex_trylock (struct __pthread_mutex *mutex)
err = EBUSY;
- if (mutex->attr)
+ if (attr)
{
self = _pthread_self ();
- switch (mutex->attr->mutex_type)
+ switch (attr->mutex_type)
{
case PTHREAD_MUTEX_NORMAL:
break;