Changeset 19915 in vbox for trunk/src/VBox/Runtime/r0drv
- Timestamp:
- May 22, 2009 3:28:19 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 47611
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/nt/thread-r0drv-nt.cpp
r19914 r19915 88 88 89 89 90 #if 091 90 RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread) 92 91 { 93 92 Assert(hThread == NIL_RTTHREAD); 94 93 95 KeRaiseIrql94 uint8_t volatile *pbQuantumEnd; 96 95 RTCCUINTREG fSavedFlags = ASMIntDisableFlags(); 97 PKPCR pPcr = KeGetPcr();98 uint8_t volatile *pbQuantumEnd;99 96 100 97 #if defined(RT_ARCH_X86) 101 98 /* HACK ALERT! The offset is from ks386.inc. */ 102 pbQuantumEnd = (uint8_t volatile *)pPcr->Prcb + 0x3375;103 99 PKPCR pPcr = (PKPCR)__readfsdword(RT_OFFSETOF(KPCR,SelfPcr)); 100 pbQuantumEnd = (uint8_t volatile *)pPcr->Prcb + 0x1a41; 104 101 105 102 #elif defined(RT_ARCH_AMD64) 106 103 /* HACK ALERT! The offset is from windbg/vista64. */ 104 PKPCR pPcr = (PKPCR)__readgsqword(RT_OFFSETOF(KPCR,Self)); 107 105 pbQuantumEnd = (uint8_t volatile *)pPcr->CurrentPrcb + 0x3375; 108 106 … … 110 108 # error "port me" 111 109 #endif 112 113 bool fResult = *pbQuantumEnd != FALSE; 110 uint8_t QuantumEnd = *pbQuantumEnd; 114 111 ASMSetFlags(fSavedFlags); 115 112 116 return fResult; 113 AssertMsg(QuantumEnd == FALSE || QuantumEnd == TRUE, ("%x\n", QuantumEnd)); 114 return QuantumEnd == TRUE; 117 115 } 118 #endif119 116 120 117
Note:
See TracChangeset
for help on using the changeset viewer.