summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2015-02-24 10:27:08 -0500
committerGedare Bloom <gedare@rtems.org>2015-02-25 15:00:41 -0500
commitc0e01a28dad77063d8edb7f7fe2cee83a5f09b2e (patch)
tree0bd42e474de34b2432828be90c00c766c2015e07
parentee87007748e44aeedad7cbb6a4465714a323961c (diff)
downloadrtems-c0e01a28dad77063d8edb7f7fe2cee83a5f09b2e.tar.bz2
posix: fix error return code for pthread_mutex_trylock
pthread_mutex_trylock() should return EBUSY if the mutex is already locked. The translations of CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED is EDEADLK which is correct for pthread_mutex_lock(). This fixes the translation for trylock. Closes #2170.
-rw-r--r--cpukit/posix/src/mutextrylock.c5
-rw-r--r--doc/posix_users/mutex.t4
2 files changed, 6 insertions, 3 deletions
diff --git a/cpukit/posix/src/mutextrylock.c b/cpukit/posix/src/mutextrylock.c
index b6e79cdaa2..332f486b49 100644
--- a/cpukit/posix/src/mutextrylock.c
+++ b/cpukit/posix/src/mutextrylock.c
@@ -37,5 +37,8 @@ int pthread_mutex_trylock(
pthread_mutex_t *mutex
)
{
- return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER );
+ int r = _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER );
+ if ( r == EDEADLK )
+ r = EBUSY;
+ return r;
}
diff --git a/doc/posix_users/mutex.t b/doc/posix_users/mutex.t
index b894538510..47f094dad4 100644
--- a/doc/posix_users/mutex.t
+++ b/doc/posix_users/mutex.t
@@ -580,8 +580,8 @@ The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
priority of the calling thread is higher than the current priority
ceiling.
-@item EDEADLK
-The current thread already owns the mutex.
+@item EBUSY
+The mutex is already locked.
@end table