VirtualBox

Changeset 19920 in vbox for trunk/src


Ignore:
Timestamp:
May 22, 2009 5:14:11 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47617
Message:

iprt/os2: Implemented RTThreadPreempt*.

Location:
trunk/src/VBox/Runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/Makefile.kmk

    r19919 r19920  
    12401240        r0drv/generic/RTMpIsCpuWorkPending-r0drv-generic.cpp \
    12411241        r0drv/generic/RTMpOn-r0drv-generic.cpp \
    1242         r0drv/generic/RTThreadPreemptIsEnabled-r0drv-generic.cpp \
    1243         r0drv/generic/RTThreadPreemptIsPending-r0drv-generic.cpp \
    1244         r0drv/generic/RTThreadPreemptDisable-r0drv-generic.cpp \
    1245         r0drv/generic/RTThreadPreemptRestore-r0drv-generic.cpp \
    12461242        r0drv/generic/mpnotification-r0drv-generic.cpp \
    12471243        r0drv/memobj-r0drv.cpp \
  • trunk/src/VBox/Runtime/r0drv/os2/thread-r0drv-os2.cpp

    r8245 r19920  
    7474}
    7575
     76
     77RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread)
     78{
     79    Assert(hThread == NIL_RTTHREAD);
     80    return false;
     81}
     82
     83
     84RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread)
     85{
     86    Assert(hThread == NIL_RTTHREAD);
     87
     88    union
     89    {
     90        RTFAR16 fp;
     91        uint8_t fResched;
     92    } u;
     93    int rc = RTR0Os2DHQueryDOSVar(DHGETDOSV_YIELDFLAG, 0, &u.fp);
     94    AssertReturn(rc == 0, false);
     95    if (u.fResched)
     96        return true;
     97
     98    /** @todo Check if DHGETDOSV_YIELDFLAG includes TCYIELDFLAG. */
     99    rc = RTR0Os2DHQueryDOSVar(DHGETDOSV_TCYIELDFLAG, 0, &u.fp);
     100    AssertReturn(rc == 0, false);
     101    if (u.fResched)
     102        return true;
     103    return false;
     104}
     105
     106
     107RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState)
     108{
     109    AssertPtr(pState);
     110    Assert(pState->uchDummy != 42);
     111    pState->uchDummy = 42;
     112    /* Nothing to do here as OS/2 doesn't preempt kernel threads. */
     113}
     114
     115
     116RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState)
     117{
     118    AssertPtr(pState);
     119    Assert(pState->uchDummy == 42);
     120    pState->uchDummy = 0;
     121}
     122
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