2013-12-13 06:41:02 +08:00
|
|
|
/*
|
|
|
|
* mtx is a slightly simplified version of malloc_mutex. This code duplication
|
|
|
|
* is unfortunate, but there are allocator bootstrapping considerations that
|
|
|
|
* would leak into the test infrastructure if malloc_mutex were used directly
|
|
|
|
* in tests.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
#ifdef _WIN32
|
|
|
|
CRITICAL_SECTION lock;
|
2016-11-03 09:09:45 +08:00
|
|
|
#elif (defined(JEMALLOC_OS_UNFAIR_LOCK))
|
|
|
|
os_unfair_lock lock;
|
2013-12-13 06:41:02 +08:00
|
|
|
#else
|
|
|
|
pthread_mutex_t lock;
|
|
|
|
#endif
|
|
|
|
} mtx_t;
|
|
|
|
|
|
|
|
bool mtx_init(mtx_t *mtx);
|
|
|
|
void mtx_fini(mtx_t *mtx);
|
|
|
|
void mtx_lock(mtx_t *mtx);
|
|
|
|
void mtx_unlock(mtx_t *mtx);
|