1 #ifndef JEMALLOC_INTERNAL_MUTEX_TYPES_H
2 #define JEMALLOC_INTERNAL_MUTEX_TYPES_H
3 
4 typedef struct malloc_mutex_s malloc_mutex_t;
5 
6 #ifdef _WIN32
7 #  define MALLOC_MUTEX_INITIALIZER
8 #elif (defined(JEMALLOC_OS_UNFAIR_LOCK))
9 #  define MALLOC_MUTEX_INITIALIZER					\
10      {OS_UNFAIR_LOCK_INIT, WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)}
11 #elif (defined(JEMALLOC_OSSPIN))
12 #  define MALLOC_MUTEX_INITIALIZER					\
13      {0, WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)}
14 #elif (defined(JEMALLOC_MUTEX_INIT_CB))
15 #  define MALLOC_MUTEX_INITIALIZER					\
16     {PTHREAD_MUTEX_INITIALIZER, NULL,					\
17      WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)}
18 #else
19 #  if (defined(JEMALLOC_HAVE_PTHREAD_MUTEX_ADAPTIVE_NP) &&		\
20        defined(PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP))
21 #    define MALLOC_MUTEX_TYPE PTHREAD_MUTEX_ADAPTIVE_NP
22 #    define MALLOC_MUTEX_INITIALIZER					\
23        {PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP,				\
24         WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)}
25 #  else
26 #    define MALLOC_MUTEX_TYPE PTHREAD_MUTEX_DEFAULT
27 #    define MALLOC_MUTEX_INITIALIZER					\
28        {PTHREAD_MUTEX_INITIALIZER,					\
29         WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)}
30 #  endif
31 #endif
32 
33 #endif /* JEMALLOC_INTERNAL_MUTEX_TYPES_H */
34