[rtems commit] posix: fix error return code for pthread_mutex_trylock
Gedare Bloom
gedare at rtems.org
Wed Feb 25 20:01:00 UTC 2015
Module: rtems
Branch: master
Commit: c0e01a28dad77063d8edb7f7fe2cee83a5f09b2e
Changeset: http://git.rtems.org/rtems/commit/?id=c0e01a28dad77063d8edb7f7fe2cee83a5f09b2e
Author: Gedare Bloom <gedare at rtems.org>
Date: Tue Feb 24 10:27:08 2015 -0500
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.
---
cpukit/posix/src/mutextrylock.c | 5 ++++-
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 b6e79cd..332f486 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 b894538..47f094d 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.
- at item EDEADLK
-The current thread already owns the mutex.
+ at item EBUSY
+The mutex is already locked.
@end table
More information about the vc
mailing list