break;
}
+ VG_TRACK( post_mutex_unlock, (ThreadId)mutex->__m_owner, mutex );
+
vg_assert(i <= VG_N_THREADS);
if (i == VG_N_THREADS) {
/* Nobody else is waiting on it. */
VG_(threads)[i].associated_mx = NULL;
/* m_edx already holds pth_mx_lock() success (0) */
+ VG_TRACK( post_mutex_lock, (ThreadId)i, mutex);
+
if (VG_(clo_trace_pthread_level) >= 1) {
VG_(sprintf)(msg_buf, "%s mx %p: RESUME",
caller, mutex );
vg_assert(mutex->__m_count == 1);
vg_assert((ThreadId)mutex->__m_owner == tid);
- VG_TRACK( post_mutex_unlock, tid, mutex);
-
/* Release at max one thread waiting on this mutex. */
release_one_thread_waiting_on_mutex ( mutex, "pthread_mutex_lock" );
mx->__m_owner = (_pthread_descr)tid;
mx->__m_count = 1;
+ VG_TRACK( post_mutex_lock, tid, mx );
+
if (VG_(clo_trace_pthread_level) >= 1) {
VG_(sprintf)(msg_buf,
"pthread_cond_timedwai cv %p: TIMEOUT with mx %p",
mx->__m_count = 1;
/* .m_edx already holds pth_cond_wait success value (0) */
+ VG_TRACK( post_mutex_lock, i, mx );
+
if (VG_(clo_trace_pthread_level) >= 1) {
VG_(sprintf)(msg_buf, "%s cv %p: RESUME with mx %p",
caller, cond, mx );