Index: ext/libicpf/src/dmutex.cpp =================================================================== diff -u -N -r2a38ed9af6573b03e881ecf726fab6a3746f8cfd -rd4269744a04d36c8a8146a84bc27118031fa42ac --- ext/libicpf/src/dmutex.cpp (.../dmutex.cpp) (revision 2a38ed9af6573b03e881ecf726fab6a3746f8cfd) +++ ext/libicpf/src/dmutex.cpp (.../dmutex.cpp) (revision d4269744a04d36c8a8146a84bc27118031fa42ac) @@ -7,38 +7,34 @@ /////////////////////////////////////////////////////////////// // debuggable mutex +/// Static dump context +dumpctx* d_mutex::m_pContext=NULL; + /** Constructs an unnamed mutex with a given dump context which will receive * notifications about locking and unlocking of this mutex. - * - * \param[in] pctx - dump context that will receive notifications about lock/unlock */ -d_mutex::d_mutex(dumpctx* pctx) - : mutex(pctx), +d_mutex::d_mutex() : + mutex(), m_ulLockCount(0) { const char_t* psz="Unnamed"; m_pszName=new char_t[strlen(psz)+1]; strcpy(m_pszName, psz); - m_pContext=pctx; - m_ulLockCount=0; } /** Constructs a named mutex with a given dump context which will receive * notifications about locking and unlocking of this mutex. * * \param[in] pszStr - name of this mutex (will be used for logging purposes) - * \param[in] pctx - dump context that will receive notifications about lock/unlock */ -d_mutex::d_mutex(const char_t* pszStr, dumpctx* pctx) : - mutex(pszStr, pctx), +d_mutex::d_mutex(const char_t* pszStr) : + mutex(pszStr), m_ulLockCount(0) { m_pszName=new char_t[strlen(pszStr)+1]; strcpy(m_pszName, pszStr); - - m_pContext=pctx; } /** Destructs the object @@ -59,6 +55,8 @@ { assert(m_pContext); + ((mutex*)this)->lock(); + m_ulLockCount++; // log the attempt and lock it @@ -67,8 +65,6 @@ m_pContext->open(sz); m_pContext->close(); - - ((mutex*)this)->lock(); } /** Unlocks this mutex. Takes some parameters that should identify the place in code which