*/
uint32
-MXUserGetSignature(MXUserObjectType objectType) // IN:
+MXUserGetSignature(uint32 objectType) // IN:
{
uint32 signature;
- ASSERT((objectType != 0) && (objectType < 16));
+ ASSERT(objectType < 16); // 4 bits of object type
signature = (MXUserSyndrome() & 0x0FFFFFFF) | (objectType << 28);
ASSERT(signature);
*/
void
-MXUserValidateHeader(MXUserHeader *header, // IN:
- MXUserObjectType objectType) // IN:
+MXUserValidateHeader(MXUserHeader *header, // IN:
+ uint32 objectType) // IN:
{
uint32 expected = MXUserGetSignature(objectType);
if (header->signature != expected) {
- MXUserDumpAndPanic(header,
- "%s: signature failure! expected %X observed %X\n",
- __FUNCTION__, expected, header->signature);
- }
-
- if (header->serialNumber == 0) {
- MXUserDumpAndPanic(header, "%s: Invalid serial number!", __FUNCTION__);
+ MXUserDumpAndPanic(header, "%s: expected %X observed %X\n", __FUNCTION__,
+ expected, header->signature);
}
}
#endif
}
/*
- * MXUser object type ID values.
+ * MXUser object type ID value. They must never be zero!
*/
-typedef enum {
- MXUSER_TYPE_RW = 1, // *MUST* *NEVER* start at zero
- MXUSER_TYPE_REC,
- MXUSER_TYPE_RANK,
- MXUSER_TYPE_EXCL,
- MXUSER_TYPE_SEMA,
- MXUSER_TYPE_CONDVAR,
- MXUSER_TYPE_BARRIER
-} MXUserObjectType;
+#define MXUSER_TYPE_RW 0x1
+#define MXUSER_TYPE_REC 0x2
+#define MXUSER_TYPE_RANK 0x3
+#define MXUSER_TYPE_EXCL 0x4
+#define MXUSER_TYPE_SEMA 0x5
+#define MXUSER_TYPE_CONDVAR 0x6
+#define MXUSER_TYPE_BARRIER 0x7
/*
* MXUser header - all MXUser objects start with this
MXRecLock *MXUserInternalSingleton(Atomic_Ptr *storage);
-uint32 MXUserGetSignature(MXUserObjectType objectType);
+uint32 MXUserGetSignature(uint32 objectType);
#if defined(MXUSER_DEBUG)
void MXUserAcquisitionTracking(MXUserHeader *header,
void MXUserReleaseTracking(MXUserHeader *header);
void MXUserValidateHeader(MXUserHeader *header,
- MXUserObjectType objectType);
+ uint32 objectType);
#else
static INLINE void
MXUserAcquisitionTracking(MXUserHeader *header, // IN:
}
static INLINE void
-MXUserValidateHeader(MXUserHeader *header, // IN:
- MXUserObject objectType) // IN:
+MXUserValidateHeader(MXUserHeader *header, // IN:
+ uint32 objectType) // IN:
{
return;
}