20 #ifdef USE_PTHREAD_MUTEX 25 #define janus_mutex_init(a) pthread_mutex_init(a,NULL) 27 #define JANUS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER 29 #define janus_mutex_destroy(a) pthread_mutex_destroy(a) 31 #define janus_mutex_lock_nodebug(a) pthread_mutex_lock(a) 33 #define janus_mutex_lock_debug(a) { JANUS_PRINT("[%s:%s:%d:lock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); pthread_mutex_lock(a); } 35 #define janus_mutex_lock(a) { if(!lock_debug) { janus_mutex_lock_nodebug(a); } else { janus_mutex_lock_debug(a); } } 37 #define janus_mutex_trylock_nodebug(a) { ret = !pthread_mutex_trylock(a); } 39 #define janus_mutex_trylock_debug(a) { JANUS_PRINT("[%s:%s:%d:trylock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); ret = !pthread_mutex_trylock(a); } 41 #define janus_mutex_trylock(a) ({ int ret; if(!lock_debug) { janus_mutex_trylock_nodebug(a); } else { janus_mutex_trylock_debug(a); } ret; }) 43 #define janus_mutex_unlock_nodebug(a) pthread_mutex_unlock(a) 45 #define janus_mutex_unlock_debug(a) { JANUS_PRINT("[%s:%s:%d:unlock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); pthread_mutex_unlock(a); } 47 #define janus_mutex_unlock(a) { if(!lock_debug) { janus_mutex_unlock_nodebug(a); } else { janus_mutex_unlock_debug(a); } } 52 #define janus_condition_init(a) pthread_cond_init(a,NULL) 54 #define janus_condition_destroy(a) pthread_cond_destroy(a) 56 #define janus_condition_wait(a, b) pthread_cond_wait(a, b); 58 #define janus_condition_wait_until(a, b, c) { \ 59 const struct timespec jct = { \ 60 .tv_sec = c / G_USEC_PER_SEC, \ 61 .tv_nsec = (c % G_USEC_PER_SEC)*1000 \ 63 pthread_cond_timedwait(a, b, &jct); \ 66 #define janus_condition_signal(a) pthread_cond_signal(a); 68 #define janus_condition_broadcast(a) pthread_cond_broadcast(a); 75 #define janus_mutex_init(a) g_mutex_init(a) 77 #define JANUS_MUTEX_INITIALIZER {0} 79 #define janus_mutex_destroy(a) g_mutex_clear(a) 81 #define janus_mutex_lock_nodebug(a) g_mutex_lock(a) 83 #define janus_mutex_lock_debug(a) { JANUS_PRINT("[%s:%s:%d:lock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); g_mutex_lock(a); } 85 #define janus_mutex_lock(a) { if(!lock_debug) { janus_mutex_lock_nodebug(a); } else { janus_mutex_lock_debug(a); } } 87 #define janus_mutex_trylock_nodebug(a) { ret = g_mutex_trylock(a); } 89 #define janus_mutex_trylock_debug(a) { JANUS_PRINT("[%s:%s:%d:trylock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); ret = g_mutex_trylock(a); } 91 #define janus_mutex_trylock(a) ({ gboolean ret; if(!lock_debug) { janus_mutex_trylock_nodebug(a); } else { janus_mutex_trylock_debug(a); } ret; }) 93 #define janus_mutex_unlock_nodebug(a) g_mutex_unlock(a) 95 #define janus_mutex_unlock_debug(a) { JANUS_PRINT("[%s:%s:%d:unlock] %p\n", __FILE__, __FUNCTION__, __LINE__, a); g_mutex_unlock(a); } 97 #define janus_mutex_unlock(a) { if(!lock_debug) { janus_mutex_unlock_nodebug(a); } else { janus_mutex_unlock_debug(a); } } 102 #define janus_condition_init(a) g_cond_init(a) 104 #define janus_condition_destroy(a) g_cond_clear(a) 106 #define janus_condition_wait(a, b) g_cond_wait(a, b); 108 #define janus_condition_wait_until(a, b, c) g_cond_wait_until(a, b, c); 110 #define janus_condition_signal(a) g_cond_signal(a); 112 #define janus_condition_broadcast(a) g_cond_broadcast(a);
GMutex janus_mutex
Janus mutex implementation.
Definition: mutex.h:73
int lock_debug
Definition: janus-cfgconv.c:38
GCond janus_condition
Janus condition implementation.
Definition: mutex.h:100