26 #if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX) 30 #define TDS_MUTEX_DECLARE(name) pthread_mutex_t name = PTHREAD_MUTEX_INITIALIZER 31 #define TDS_MUTEX_LOCK(a) pthread_mutex_lock(a) 32 #define TDS_MUTEX_UNLOCK(a) pthread_mutex_unlock(a) 33 #define TDS_MUTEX_T pthread_mutex_t 34 #define TDS_MUTEX_DECLARE_RECURSIVE(name) pthread_mutex_t name = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; 35 #define TDS_MUTEX_INIT_RECURSIVE(mutex) do { \ 36 pthread_mutexattr_t _attr; \ 37 pthread_mutexattr_init(&_attr); \ 38 pthread_mutexattr_settype(&_attr, PTHREAD_MUTEX_RECURSIVE); \ 39 pthread_mutex_init(mutex, &_attr); \ 40 pthread_mutexattr_destroy(&_attr); \ 44 #define TDS_MUTEX_DECLARE(name) int name 45 #define TDS_MUTEX_LOCK(a) 46 #define TDS_MUTEX_UNLOCK(a) 47 #define TDS_MUTEX_T int 48 #define TDS_MUTEX_DECLARE_RECURSIVE(name) int name 49 #define TDS_MUTEX_INIT_RECURSIVE(mutex)