diff options
-rw-r--r-- | pjlib/src/pj/os_core_unix.c | 43 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_dialog.c | 2 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_transaction.c | 2 |
3 files changed, 37 insertions, 10 deletions
diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c index 0dba048e..2b640cbc 100644 --- a/pjlib/src/pj/os_core_unix.c +++ b/pjlib/src/pj/os_core_unix.c @@ -79,6 +79,7 @@ struct pj_mutex_t #if PJ_DEBUG int nesting_level; pj_thread_t *owner; + char owner_name[PJ_MAX_OBJ_NAME]; #endif }; @@ -978,20 +979,35 @@ PJ_DEF(pj_status_t) pj_mutex_lock(pj_mutex_t *mutex) PJ_CHECK_STACK(); PJ_ASSERT_RETURN(mutex, PJ_EINVAL); +#if PJ_DEBUG + PJ_LOG(6,(mutex->obj_name, "Mutex: thread %s is waiting (mutex owner=%s)", + pj_thread_this()->obj_name, + mutex->owner_name)); +#else PJ_LOG(6,(mutex->obj_name, "Mutex: thread %s is waiting", pj_thread_this()->obj_name)); +#endif status = pthread_mutex_lock( &mutex->mutex ); - PJ_LOG(6,(mutex->obj_name, - (status==0 ? "Mutex acquired by thread %s" : "FAILED by %s"), - pj_thread_this()->obj_name)); #if PJ_DEBUG if (status == PJ_SUCCESS) { mutex->owner = pj_thread_this(); + pj_ansi_strcpy(mutex->owner_name, mutex->owner->obj_name); ++mutex->nesting_level; } + + PJ_LOG(6,(mutex->obj_name, + (status==0 ? + "Mutex acquired by thread %s (level=%d)" : + "Mutex acquisition FAILED by %s (level=%d)"), + pj_thread_this()->obj_name, + mutex->nesting_level)); +#else + PJ_LOG(6,(mutex->obj_name, + (status==0 ? "Mutex acquired by thread %s" : "FAILED by %s"), + pj_thread_this()->obj_name)); #endif if (status == 0) @@ -1019,11 +1035,16 @@ PJ_DEF(pj_status_t) pj_mutex_unlock(pj_mutex_t *mutex) pj_assert(mutex->owner == pj_thread_this()); if (--mutex->nesting_level == 0) { mutex->owner = NULL; + mutex->owner_name[0] = '\0'; } -#endif + PJ_LOG(6,(mutex->obj_name, "Mutex released by thread %s (level=%d)", + pj_thread_this()->obj_name, + mutex->nesting_level)); +#else PJ_LOG(6,(mutex->obj_name, "Mutex released by thread %s", pj_thread_this()->obj_name)); +#endif status = pthread_mutex_unlock( &mutex->mutex ); if (status == 0) @@ -1051,12 +1072,17 @@ PJ_DEF(pj_status_t) pj_mutex_trylock(pj_mutex_t *mutex) status = pthread_mutex_trylock( &mutex->mutex ); if (status==0) { - PJ_LOG(6,(mutex->obj_name, "Mutex acquired by thread %s", - pj_thread_this()->obj_name)); - #if PJ_DEBUG mutex->owner = pj_thread_this(); + pj_ansi_strcpy(mutex->owner_name, mutex->owner->obj_name); ++mutex->nesting_level; + + PJ_LOG(6,(mutex->obj_name, "Mutex acquired by thread %s (level=%d)", + pj_thread_this()->obj_name, + mutex->nesting_level)); +#else + PJ_LOG(6,(mutex->obj_name, "Mutex acquired by thread %s", + pj_thread_this()->obj_name)); #endif } @@ -1081,7 +1107,8 @@ PJ_DEF(pj_status_t) pj_mutex_destroy(pj_mutex_t *mutex) PJ_ASSERT_RETURN(mutex, PJ_EINVAL); #if PJ_HAS_THREADS - PJ_LOG(6,(mutex->obj_name, "Mutex destroyed")); + PJ_LOG(6,(mutex->obj_name, "Mutex destroyed by thread %s", + pj_thread_this()->obj_name)); status = pthread_mutex_destroy( &mutex->mutex ); if (status == 0) return PJ_SUCCESS; diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c index fd70c767..6cc76141 100644 --- a/pjsip/src/pjsip/sip_dialog.c +++ b/pjsip/src/pjsip/sip_dialog.c @@ -80,7 +80,7 @@ static pj_status_t create_dialog( pjsip_user_agent *ua, pj_list_init(&dlg->inv_hdr); - status = pj_mutex_create_recursive(pool, "dlg%p", &dlg->mutex_); + status = pj_mutex_create_recursive(pool, dlg->obj_name, &dlg->mutex_); if (status != PJ_SUCCESS) goto on_error; diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c index 211749fe..82722332 100644 --- a/pjsip/src/pjsip/sip_transaction.c +++ b/pjsip/src/pjsip/sip_transaction.c @@ -905,7 +905,7 @@ static pj_status_t tsx_create( pjsip_module *tsx_user, tsx->timeout_timer.user_data = tsx; tsx->timeout_timer.cb = &tsx_timer_callback; - status = pj_mutex_create_recursive(pool, "tsx%p", &tsx->mutex); + status = pj_mutex_create_recursive(pool, tsx->obj_name, &tsx->mutex); if (status != PJ_SUCCESS) { pjsip_endpt_release_pool(mod_tsx_layer.endpt, pool); return status; |