From bd1777fd53d74c91bc8d3908dc1a2e0f996e3c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 21 Sep 2015 23:56:11 +0200 Subject: [PATCH] unix, win: consolidate mutex trylock errors Fold EAGAIN into EBUSY, and make it the only acceptable error. PR-URL: https://github.com/libuv/libuv/pull/535 Reviewed-By: Ben Noordhuis --- src/unix/thread.c | 12 ++++++------ src/win/thread.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/unix/thread.c b/src/unix/thread.c index 0c7982713..c56a31702 100644 --- a/src/unix/thread.c +++ b/src/unix/thread.c @@ -124,14 +124,14 @@ void uv_mutex_lock(uv_mutex_t* mutex) { int uv_mutex_trylock(uv_mutex_t* mutex) { int err; - /* FIXME(bnoordhuis) EAGAIN means recursive lock limit reached. Arguably - * a bug, should probably abort rather than return -EAGAIN. - */ err = pthread_mutex_trylock(mutex); - if (err && err != EBUSY && err != EAGAIN) - abort(); + if (err) { + if (err != EBUSY && err != EAGAIN) + abort(); + return -EBUSY; + } - return -err; + return 0; } diff --git a/src/win/thread.c b/src/win/thread.c index bacceab95..6c70e76e1 100644 --- a/src/win/thread.c +++ b/src/win/thread.c @@ -232,7 +232,7 @@ int uv_mutex_trylock(uv_mutex_t* mutex) { if (TryEnterCriticalSection(mutex)) return 0; else - return UV_EAGAIN; + return UV_EBUSY; }