#include "userlock.h"
#include "ulInt.h"
+#define MXUSER_EXCL_SIGNATURE 0x58454B4C // 'LKEX' in memory
+
struct MXUserExclLock
{
MXUserHeader header;
}
lock->header.lockName = properName;
- lock->header.lockSignature = USERLOCK_SIGNATURE;
+ lock->header.lockSignature = MXUSER_EXCL_SIGNATURE;
lock->header.lockRank = rank;
lock->header.lockDumper = MXUserDumpExclLock;
MXUser_DestroyExclLock(MXUserExclLock *lock) // IN:
{
if (lock != NULL) {
- ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE);
+ ASSERT(lock->header.lockSignature == MXUSER_EXCL_SIGNATURE);
if (MXRecLockCount(&lock->recursiveLock) > 0) {
MXUserDumpAndPanic(&lock->header,
MXUserHisto *histo;
#endif
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
MXUserAcquisitionTracking(&lock->header, TRUE);
MXUserHisto *histo;
#endif
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
#if defined(MXUSER_STATS)
value = MXUserReadTimerNS() - lock->holdStart;
uint64 begin;
#endif
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
if (MXUserTryAcquireFail(lock->header.lockName)) {
return FALSE;
Bool
MXUser_IsCurThreadHoldingExclLock(const MXUserExclLock *lock) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
return MXRecLockIsOwner(&lock->recursiveLock);
}
{
Bool result;
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
switch (command) {
#if defined(MXUSER_STATS)
MXUserCondVar *
MXUser_CreateCondVarExclLock(MXUserExclLock *lock)
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
return MXUserCreateCondVar(&lock->header, &lock->recursiveLock);
}
MXUser_WaitCondVarExclLock(MXUserExclLock *lock, // IN:
MXUserCondVar *condVar) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar,
MXUSER_WAIT_INFINITE);
MXUserCondVar *condVar, // IN:
uint32 msecWait) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_EXCL_SIGNATURE));
return MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar,
msecWait);
* MXUser lock header - all MXUser locks start with this
*/
-#define USERLOCK_SIGNATURE 0x4B434F4C // 'LOCK' in memory
-
typedef struct MXUserHeader {
uint32 lockSignature;
MX_Rank lockRank;
#include "userlock.h"
#include "ulInt.h"
+#define MXUSER_RW_SIGNATURE 0x57524B4C // 'LKRW' in memory
+
/*
* Environment specific implementations of portable read-write locks.
MXUserFreeHashEntry);
lock->header.lockName = properName;
- lock->header.lockSignature = USERLOCK_SIGNATURE;
+ lock->header.lockSignature = MXUSER_RW_SIGNATURE;
lock->header.lockRank = rank;
lock->header.lockDumper = MXUserDumpRWLock;
MXUser_DestroyRWLock(MXUserRWLock *lock) // IN:
{
if (LIKELY(lock != NULL)) {
- ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE);
+ ASSERT(lock->header.lockSignature == MXUSER_RW_SIGNATURE);
if (Atomic_Read(&lock->holderCount) != 0) {
MXUserDumpAndPanic(&lock->header,
MXUserHisto *histo;
#endif
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE));
MXUserAcquisitionTracking(&lock->header, TRUE);
{
HolderContext *myContext;
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE));
myContext = MXUserGetHolderContext(lock);
MXUserHisto *histo;
#endif
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_RW_SIGNATURE));
myContext = MXUserGetHolderContext(lock);
#include "userlock.h"
#include "ulInt.h"
+#define MXUSER_REC_SIGNATURE 0x43524B4C // 'LKRC' in memory
+
struct MXUserRecLock
{
MXUserHeader header;
lock->vmmLock = NULL;
lock->header.lockName = properName;
- lock->header.lockSignature = USERLOCK_SIGNATURE;
+ lock->header.lockSignature = MXUSER_REC_SIGNATURE;
lock->header.lockRank = rank;
lock->header.lockDumper = MXUserDumpRecLock;
MXUser_DestroyRecLock(MXUserRecLock *lock) // IN:
{
if (lock != NULL) {
- ASSERT(lock->header.lockSignature == USERLOCK_SIGNATURE);
+ ASSERT(lock->header.lockSignature == MXUSER_REC_SIGNATURE);
if (lock->vmmLock == NULL) {
if (MXRecLockCount(&lock->recursiveLock) > 0) {
void
MXUser_AcquireRecLock(MXUserRecLock *lock) // IN/OUT:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
if (lock->vmmLock) {
ASSERT(MXUserMX_LockRec);
void
MXUser_ReleaseRecLock(MXUserRecLock *lock) // IN/OUT:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
if (lock->vmmLock) {
ASSERT(MXUserMX_UnlockRec);
{
Bool success;
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
if (lock->vmmLock) {
ASSERT(MXUserMX_TryLockRec);
MXUser_IsCurThreadHoldingRecLock(const MXUserRecLock *lock) // IN:
{
Bool result;
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
if (lock->vmmLock) {
ASSERT(MXUserMX_IsLockedByCurThreadRec);
{
Bool result;
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
ASSERT(lock->vmmLock == NULL); // only unbound locks
switch (command) {
MXUserCondVar *
MXUser_CreateCondVarRecLock(MXUserRecLock *lock)
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
ASSERT(lock->vmmLock == NULL); // only unbound locks
return MXUserCreateCondVar(&lock->header, &lock->recursiveLock);
MXUser_WaitCondVarRecLock(MXUserRecLock *lock, // IN:
MXUserCondVar *condVar) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
ASSERT(lock->vmmLock == NULL); // only unbound locks
MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar,
MXUserCondVar *condVar, // IN:
uint32 msecWait) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
return MXUserWaitCondVar(&lock->header, &lock->recursiveLock, condVar,
msecWait);
struct MX_MutexRec *
MXUser_GetRecLockVmm(const MXUserRecLock *lock) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
return lock->vmmLock;
}
MX_Rank
MXUser_GetRecLockRank(const MXUserRecLock *lock) // IN:
{
- ASSERT(lock && (lock->header.lockSignature == USERLOCK_SIGNATURE));
+ ASSERT(lock && (lock->header.lockSignature == MXUSER_REC_SIGNATURE));
return lock->header.lockRank;
}
lock->header.lockName = Str_SafeAsprintf(NULL, "MX_%p", mutex);
- lock->header.lockSignature = USERLOCK_SIGNATURE;
+ lock->header.lockSignature = MXUSER_REC_SIGNATURE;
lock->header.lockRank = rank;
lock->header.lockDumper = NULL;