winpthreads: mutex.c: replace `is_static_initializer` function with a macro This is consistent with other source files. Document valid values for a statically initialized `pthread_mutex_t` object. Signed-off-by: Kirill Makurin <maiddaisuki@outlook.com> Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-libraries/winpthreads/src/mutex.c b/mingw-w64-libraries/winpthreads/src/mutex.c index aea1b92..b1ab7e1 100644 --- a/mingw-w64-libraries/winpthreads/src/mutex.c +++ b/mingw-w64-libraries/winpthreads/src/mutex.c
@@ -61,11 +61,15 @@ ID of the owning thread if the mutex is locked. */ } mutex_impl_t; -/* Whether a mutex is still a static initializer (not a pointer to a mutex_impl_t). */ -static BOOL is_static_initializer(pthread_mutex_t m) -{ - return (uintptr_t)m >= (uintptr_t)-3; -} +/** + * Evaluates to non-zero if `m` is a static initializer for `pthread_mutex_t`: + * + * PTHREAD_DEFAULT_MUTEX_INITIALIZER: -1 + * PTHREAD_NORMAL_MUTEX_INITIALIZER: -1 + * PTHREAD_ERRORCHECK_MUTEX_INITIALIZER: -2 + * PTHREAD_RECURSIVE_MUTEX_INITIALIZER: -3 + */ +#define STATIC_MUTEX_INITIALIZER(m) ((uintptr_t)(m) >= (uintptr_t)-3) /* Create and return the implementation part of a mutex from a static initialiser. Return NULL on out-of-memory error. */ @@ -95,7 +99,7 @@ static WINPTHREADS_INLINE mutex_impl_t *mutex_impl(pthread_mutex_t *m) { mutex_impl_t *mi = (mutex_impl_t *)*m; - if (is_static_initializer((pthread_mutex_t)mi)) { + if (STATIC_MUTEX_INITIALIZER(mi)) { return mutex_impl_init(m, mi); } else { /* mi cannot be null here; avoid a test in the fast path. */ @@ -284,7 +288,7 @@ int pthread_mutex_destroy(pthread_mutex_t *m) { mutex_impl_t *mi = (mutex_impl_t *)*m; - if (!is_static_initializer((pthread_mutex_t)mi)) { + if (!STATIC_MUTEX_INITIALIZER(mi)) { if (mi->event != NULL) CloseHandle(mi->event); free(mi);