From a1c542bb9fc86288ed001a46654e45b0f1f87b3c Mon Sep 17 00:00:00 2001 From: Anastasia Lyupa Date: Mon, 24 Jun 2013 13:03:21 +0400 Subject: [PATCH] add the rest sync probes in libdasync.c --- probe_thread/libdasync.c | 60 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/probe_thread/libdasync.c b/probe_thread/libdasync.c index 248adc9..392dc5f 100644 --- a/probe_thread/libdasync.c +++ b/probe_thread/libdasync.c @@ -104,16 +104,17 @@ int pthread_mutex_lock(pthread_mutex_t *mutex) { SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START); APPEND_LOG_NULL_CALLSTACK(); printLog(&log, MSG_LOG); - PRE_PROBEBLOCK_END(); - - ret = pthread_mutex_lockp(mutex); PREPARE_LOCAL_BUF(); PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "p", mutex); - PACK_COMMON_END(ret, errno, blockresult); - PACK_SYNC(mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_END); + PACK_COMMON_END(0, 0, blockresult); + PACK_SYNC(mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START); FLUSH_LOCAL_BUF(); + PRE_PROBEBLOCK_END(); + + ret = pthread_mutex_lockp(mutex); + // send WAIT_END log newerrno = errno; if(postBlockBegin(blockresult)) { @@ -128,6 +129,13 @@ int pthread_mutex_lock(pthread_mutex_t *mutex) { SYNC_API_ACQUIRE_WAIT_END); POST_PROBEBLOCK_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "p", mutex); + PACK_COMMON_END(ret, errno, blockresult); + PACK_SYNC(mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_END); + FLUSH_LOCAL_BUF(); + postBlockEnd(); } @@ -154,6 +162,13 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START); APPEND_LOG_NULL_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "pp", mutex, abs_timeout); + PACK_COMMON_END(0, 0, blockresult); + PACK_SYNC(mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_START); + FLUSH_LOCAL_BUF(); + PRE_PROBEBLOCK_END(); ret = pthread_mutex_timedlockp(mutex, abs_timeout); @@ -172,6 +187,13 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, SYNC_API_ACQUIRE_WAIT_END); POST_PROBEBLOCK_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "pp", mutex, abs_timeout); + PACK_COMMON_END(ret, errno, blockresult); + PACK_SYNC(mutex, SYNC_PTHREAD_MUTEX, SYNC_API_ACQUIRE_WAIT_END); + FLUSH_LOCAL_BUF(); + postBlockEnd(); } @@ -479,6 +501,13 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START); APPEND_LOG_NULL_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "pp", cond, mutex); + PACK_COMMON_END(0, 0, blockresult); + PACK_SYNC(cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START); + FLUSH_LOCAL_BUF(); + PRE_PROBEBLOCK_END(); ret = pthread_cond_waitp(cond, mutex); @@ -497,6 +526,13 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { SYNC_API_COND_WAIT_END); POST_PROBEBLOCK_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "pp", cond, mutex); + PACK_COMMON_END(ret, errno, blockresult); + PACK_SYNC(cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_END); + FLUSH_LOCAL_BUF(); + postBlockEnd(); } @@ -523,6 +559,13 @@ int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START); APPEND_LOG_NULL_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "ppp", cond, mutex, abstime); + PACK_COMMON_END(0, 0, blockresult); + PACK_SYNC(cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_START); + FLUSH_LOCAL_BUF(); + PRE_PROBEBLOCK_END(); ret = pthread_cond_timedwaitp(cond, mutex, abstime); @@ -541,6 +584,13 @@ int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, SYNC_API_COND_WAIT_END); POST_PROBEBLOCK_CALLSTACK(); printLog(&log, MSG_LOG); + + PREPARE_LOCAL_BUF(); + PACK_COMMON_BEGIN(MSG_PROBE_SYNC, LC_SYNC, "ppp", cond, mutex, abstime); + PACK_COMMON_END(ret, errno, blockresult); + PACK_SYNC(cond, SYNC_PTHREAD_COND_VARIABLE, SYNC_API_COND_WAIT_END); + FLUSH_LOCAL_BUF(); + postBlockEnd(); } -- 2.7.4