Module: xenomai-gch Branch: for-forge Commit: c1dd3a3fda79c780e7398704d67f46116d382f27 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=c1dd3a3fda79c780e7398704d67f46116d382f27
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Sun Jan 29 15:38:52 2012 +0100 posix: get pthread_mutex_trylock to use dedicated syscall --- lib/cobalt/mutex.c | 17 +++++------------ 1 files changed, 5 insertions(+), 12 deletions(-) diff --git a/lib/cobalt/mutex.c b/lib/cobalt/mutex.c index 70684ad..f4c5a03 100644 --- a/lib/cobalt/mutex.c +++ b/lib/cobalt/mutex.c @@ -233,7 +233,6 @@ int __wrap_pthread_mutex_trylock(pthread_mutex_t *mutex) struct __shadow_mutex *_mutex = &((union __xeno_mutex *)mutex)->shadow_mutex; unsigned long status; - struct timespec ts; xnhandle_t cur; int err; @@ -271,21 +270,15 @@ int __wrap_pthread_mutex_trylock(pthread_mutex_t *mutex) do_syscall: - __RT(clock_gettime(CLOCK_REALTIME, &ts)); do { - err = XENOMAI_SKINCALL2(__cobalt_muxid, - sc_cobalt_mutex_timedlock, _mutex, &ts); + err = XENOMAI_SKINCALL1(__cobalt_muxid, + sc_cobalt_mutex_trylock, _mutex); } while (err == -EINTR); - if (err) { - if (err == -ETIMEDOUT || err == -EDEADLK) - return EBUSY; - return -err; - } - - _mutex->lockcnt = 1; + if (!err) + _mutex->lockcnt = 1; - return 0; + return -err; } int __wrap_pthread_mutex_unlock(pthread_mutex_t *mutex) _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git