From: VMware, Inc <> Date: Thu, 18 Nov 2010 22:29:52 +0000 (-0800) Subject: Changes in shared code that don't affect open-vm-tools functionality. X-Git-Tag: 2010.11.17-327185~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec4a1dd723eeac6764af829621dc2ee2f88d9092;p=thirdparty%2Fopen-vm-tools.git Changes in shared code that don't affect open-vm-tools functionality. Signed-off-by: Marcelo Vanzin --- diff --git a/open-vm-tools/lib/lock/ul.c b/open-vm-tools/lib/lock/ul.c index 6a02ffff6..ff3c85c68 100644 --- a/open-vm-tools/lib/lock/ul.c +++ b/open-vm-tools/lib/lock/ul.c @@ -173,6 +173,44 @@ MXUser_IsCurThreadHoldingLocks(void) } +/* + *----------------------------------------------------------------------------- + * + * MXUserCurrentRank -- + * + * Return the highest rank held by the current thread via MXUser locks. + * + * Results: + * As above + * + * Side effects: + * None + * + *----------------------------------------------------------------------------- + */ + +MX_Rank +MXUserCurrentRank(void) +{ + MXUserPerThread *perThread; + MX_Rank maxRank = RANK_UNRANKED; + + perThread = MXUserGetPerThread(MXUserGetNativeTID(), FALSE); + + if (perThread != NULL) { + uint32 i; + + for (i = 0; i < perThread->locksHeld; i++) { + MXUserHeader *chkHdr = perThread->lockArray[i]; + + maxRank = MAX(chkHdr->rank, maxRank); + } + } + + return maxRank; +} + + /* *----------------------------------------------------------------------------- * diff --git a/open-vm-tools/lib/lock/ulIntShared.h b/open-vm-tools/lib/lock/ulIntShared.h index a20036ca4..3e43ed80d 100644 --- a/open-vm-tools/lib/lock/ulIntShared.h +++ b/open-vm-tools/lib/lock/ulIntShared.h @@ -30,6 +30,8 @@ MXUserListLocks(void) } #endif +MX_Rank MXUserCurrentRank(void); + extern void MXUserInstallMxHooks(void (*theLockListFunc)(void), MX_Rank (*theRankFunc)(void), void (*theLockFunc)(struct MX_MutexRec *lock),