Lines Matching defs:mtx
125 static inline int mtx_trylock(mtx_t *mtx);
126 static inline int mtx_lock(mtx_t *mtx);
127 static inline int mtx_unlock(mtx_t *mtx);
213 static int impl_cond_do_wait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts)
224 mtx_unlock(mtx);
261 mtx_lock(mtx);
385 cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *abs_time)
387 if (!cond || !mtx || !abs_time) return thrd_error;
389 if (SleepConditionVariableCS(&cond->condvar, mtx, impl_timespec2msec(abs_time)))
393 return impl_cond_do_wait(cond, mtx, abs_time);
399 cnd_wait(cnd_t *cond, mtx_t *mtx)
401 if (!cond || !mtx) return thrd_error;
403 SleepConditionVariableCS(&cond->condvar, mtx, INFINITE);
405 impl_cond_do_wait(cond, mtx, NULL);
414 mtx_destroy(mtx_t *mtx)
416 assert(mtx);
417 DeleteCriticalSection(mtx);
422 mtx_init(mtx_t *mtx, int type)
424 if (!mtx) return thrd_error;
430 InitializeCriticalSection(mtx);
436 mtx_lock(mtx_t *mtx)
438 if (!mtx) return thrd_error;
439 EnterCriticalSection(mtx);
445 mtx_timedlock(mtx_t *mtx, const struct timespec *ts)
448 if (!mtx || !ts) return thrd_error;
451 while (mtx_trylock(mtx) != thrd_success) {
463 mtx_trylock(mtx_t *mtx)
465 if (!mtx) return thrd_error;
466 return TryEnterCriticalSection(mtx) ? thrd_success : thrd_busy;
471 mtx_unlock(mtx_t *mtx)
473 if (!mtx) return thrd_error;
474 LeaveCriticalSection(mtx);