VirtualBox

Changeset 13254 in vbox for trunk/src/VBox/Runtime/r0drv/nt


Ignore:
Timestamp:
Oct 14, 2008 12:35:50 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
37865
Message:

IPRT: Added RTThreadPreemptIsEnabled, RTThreadPreemptDisable and RTThreadPreemptRestore. Made the logger check that preemption is enabled before trying to take the semaphore on Solaris and Windows.

File:
1 edited

Legend:

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

    r8245 r13254  
    7272
    7373
     74RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread)
     75{
     76    Assert(hThread == NIL_RTTHREAD);
     77    KIRQL Irql = KeGetCurrentIrql();
     78    return Irql <= APC_LEVEL;
     79}
     80
     81
     82RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState)
     83{
     84    AssertPtr(pState);
     85    Assert(pState->uchOldIrql == 255);
     86    Assert(KeGetCurrentIrql() <= DISPATCH_LEVEL);
     87
     88    KeRaiseIrql(DISPATCH_LEVEL, &pState->uchOldIrql);
     89}
     90
     91
     92RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState)
     93{
     94    AssertPtr(pState);
     95
     96    KeLowerIrql(pState->uchOldIrql);
     97    pState->uchOldIrql = 255;
     98}
     99
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