1 /*
2  * mtx is a slightly simplified version of malloc_mutex.  This code duplication
3  * is unfortunate, but there are allocator bootstrapping considerations that
4  * would leak into the test infrastructure if malloc_mutex were used directly
5  * in tests.
6  */
7 
8 typedef struct {
9 #ifdef _WIN32
10 	CRITICAL_SECTION	lock;
11 #elif (defined(JEMALLOC_OS_UNFAIR_LOCK))
12 	os_unfair_lock		lock;
13 #elif (defined(JEMALLOC_OSSPIN))
14 	OSSpinLock		lock;
15 #else
16 	pthread_mutex_t		lock;
17 #endif
18 } mtx_t;
19 
20 bool	mtx_init(mtx_t *mtx);
21 void	mtx_fini(mtx_t *mtx);
22 void	mtx_lock(mtx_t *mtx);
23 void	mtx_unlock(mtx_t *mtx);
24