lock->header.identifier = MXUserAllocID();
stats = Util_SafeCalloc(1, sizeof(*stats));
+
+ MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
+ MXUserBasicStatsSetUp(&stats->heldStats, MXUSER_STAT_CLASS_HELD);
#else
stats = NULL;
#endif
Atomic_WritePtr(&lock->statsMem, stats);
- if (stats) {
- MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
- MXUserBasicStatsSetUp(&stats->heldStats, MXUSER_STAT_CLASS_HELD);
- }
-
MXUserAddToList(&lock->header);
return lock;
lock->header.statsFunc = MXUserStatsActionRW;
lock->header.identifier = MXUserAllocID();
- stats = Util_SafeCalloc(1, sizeof(*stats));
+ stats = Util_SafeCalloc(1, sizeof(*stats));
+
+ MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
+ MXUserBasicStatsSetUp(&stats->heldStats, MXUSER_STAT_CLASS_HELD);
#else
- stats = NULL;
+ stats = NULL;
#endif
- if (stats) {
- MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
- MXUserBasicStatsSetUp(&stats->heldStats, MXUSER_STAT_CLASS_HELD);
- }
-
MXUserAddToList(&lock->header);
} else {
free(properName);
* MXUser_CreateRecLockEx --
*
* Create a recursive lock specifying if the lock must always be
- * silent - never logging any messages.
+ * silent - never logging any messages. Silent locks will never
+ * produce any statistics, amongst the other aspect of "silent".
*
* Only the owner (thread) of a recursive lock may recurse on it.
*
sema->header.identifier = MXUserAllocID();
stats = Util_SafeCalloc(1, sizeof(*stats));
+
+ MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
#else
stats = NULL;
#endif
Atomic_WritePtr(&sema->statsMem, stats);
- if (stats) {
- MXUserAcquisitionStatsSetUp(&stats->acquisitionStats);
- }
-
MXUserAddToList(&sema->header);
} else {
free(properName);
uint32
MXUserAllocID(void)
{
- static Atomic_uint32 firstFreeID = { 0 };
+ static Atomic_uint32 firstFreeID = { 1 }; // must start not zero
return Atomic_FetchAndInc(&firstFreeID);
}