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