VirtualBox

Changeset 19915 in vbox for trunk/src/VBox/Runtime/r0drv


Ignore:
Timestamp:
May 22, 2009 3:28:19 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47611
Message:

iprt/nt: RTThreadPreemptIsPending (untested).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/nt/thread-r0drv-nt.cpp

    r19914 r19915  
    8888
    8989
    90 #if 0
    9190RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread)
    9291{
    9392    Assert(hThread == NIL_RTTHREAD);
    9493
    95     KeRaiseIrql
     94    uint8_t volatile *pbQuantumEnd;
    9695    RTCCUINTREG       fSavedFlags  = ASMIntDisableFlags();
    97     PKPCR             pPcr         = KeGetPcr();
    98     uint8_t volatile *pbQuantumEnd;
    9996
    10097#if   defined(RT_ARCH_X86)
    10198    /* 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;
    104101
    105102#elif defined(RT_ARCH_AMD64)
    106103    /* HACK ALERT! The offset is from windbg/vista64. */
     104    PKPCR pPcr = (PKPCR)__readgsqword(RT_OFFSETOF(KPCR,Self));
    107105    pbQuantumEnd = (uint8_t volatile *)pPcr->CurrentPrcb + 0x3375;
    108106
     
    110108# error "port me"
    111109#endif
    112 
    113     bool fResult = *pbQuantumEnd != FALSE;
     110    uint8_t QuantumEnd = *pbQuantumEnd;
    114111    ASMSetFlags(fSavedFlags);
    115112
    116     return fResult;
     113    AssertMsg(QuantumEnd == FALSE || QuantumEnd == TRUE, ("%x\n", QuantumEnd));
     114    return QuantumEnd == TRUE;
    117115}
    118 #endif
    119116
    120117
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette