diff options
author | Gedare Bloom <gedare@rtems.org> | 2015-02-24 10:27:08 -0500 |
---|---|---|
committer | Gedare Bloom <gedare@rtems.org> | 2015-02-25 15:00:41 -0500 |
commit | c0e01a28dad77063d8edb7f7fe2cee83a5f09b2e (patch) | |
tree | 0bd42e474de34b2432828be90c00c766c2015e07 | |
parent | Panic on RTEMS_FAST_MUTEX network semaphore claim/release. (diff) | |
download | rtems-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.c | 5 | ||||
-rw-r--r-- | doc/posix_users/mutex.t | 4 |
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 |