struct MX_MutexRec;
+void MXUser_PlantThreadWatchDog(void (*func)(void));
+
#if defined(VMX86_VMX)
MXUserRecLock *MXUser_InitFromMXRec(const char *name,
struct MX_MutexRec *mutex,
#include "util.h"
#include "userlock.h"
#include "ulInt.h"
-#include "ulIntShared.h"
#include "hashTable.h"
static Bool mxInPanic = FALSE; // track when involved in a panic
+void (*MXUserVThreadWatchDog)(void);
+
Bool (*MXUserTryAcquireForceFail)() = NULL;
static MX_Rank (*MXUserMxCheckRank)(void) = NULL;
}
#endif
}
+
+
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * MXUser_PlantThreadWatchDog --
+ *
+ * Plant the pointer to VThread_WatchDog.
+ *
+ * If this is called lib/thread is around.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+void
+MXUser_PlantThreadWatchDog(void (*func)(void))
+{
+ MXUserVThreadWatchDog = func;
+}
#ifndef _ULINTSHARED_H_
#define _ULINTSHARED_H_
+extern void (*MXUserVThreadWatchDog)(void);
+
extern void MXUserListLocks(void);
+extern void MXUserPerThreadData(VThreadID, uint64 *, uint64 *);
+
extern void MXUserInstallMxHooks(void (*theLockListFunc)(void),
MX_Rank (*theRankFunc)(void),
void (*theLockFunc)(struct MX_MutexRec *lock),