7 * Wrapper for the mutex. Includes a ref-count to keep
8 * track of how many there are out-standing threads blocking
11 pthread_mutex_t *mutex;
17 fprintf(stderr, "%s:%s(%i) lock %p depth: %d (%ld)\n", __FILE__, __FUNCTION__, __LINE__, a.mutex, a.depth, pthread_self()); \
18 a.depth++; pthread_mutex_lock(a.mutex)
20 fprintf(stderr, "%s:%s(%i) unlock %p depth: %d (%ld)\n", __FILE__, __FUNCTION__, __LINE__, a.mutex, a.depth, pthread_self()); \
21 a.depth--; pthread_mutex_unlock(a.mutex)
22 #define lock_cleanup_pop(a) \
23 fprintf(stderr, "%s:%s(%i) unlock %p depth: %d (%ld)\n", __FILE__, __FUNCTION__, __LINE__, a.mutex, a.depth, pthread_self()); \
24 pthread_cleanup_pop(1);
26 #define lock(a) a.depth++; pthread_mutex_lock(a.mutex)
27 #define unlock(a) a.depth--; pthread_mutex_unlock(a.mutex)
28 #define lock_cleanup_pop(a) pthread_cleanup_pop(1);
31 void cleanup_lock (void * data);