Browse Source

deps: backport bd1777fd from libuv upstream

Original commit message:

    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 <info@bnoordhuis.nl>

PR-URL: https://github.com/nodejs/node-private/pull/54
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
v0.12-staging
Rod Vagg 9 years ago
parent
commit
da8501edf6
  1. 12
      deps/uv/src/unix/thread.c
  2. 2
      deps/uv/src/win/thread.c

12
deps/uv/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 uv_mutex_trylock(uv_mutex_t* mutex) {
int err; 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); err = pthread_mutex_trylock(mutex);
if (err && err != EBUSY && err != EAGAIN) if (err) {
abort(); if (err != EBUSY && err != EAGAIN)
abort();
return -EBUSY;
}
return -err; return 0;
} }

2
deps/uv/src/win/thread.c

@ -211,7 +211,7 @@ int uv_mutex_trylock(uv_mutex_t* mutex) {
if (TryEnterCriticalSection(mutex)) if (TryEnterCriticalSection(mutex))
return 0; return 0;
else else
return UV_EAGAIN; return UV_EBUSY;
} }

Loading…
Cancel
Save