VirtualBox

Changeset 37154 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
May 19, 2011 12:54:32 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
71834
Message:

RTThread[SG]etAffinity cleanup

Location:
trunk/src/VBox/Runtime
Files:
4 added
4 edited

Legend:

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

    r37024 r37154  
    527527        generic/RTSemMutexRequest-generic.cpp \
    528528        generic/RTSemMutexRequestDebug-generic.cpp \
     529        generic/RTThreadSetAffinityToCpu-generic.cpp \
    529530        generic/mppresent-generic.cpp \
    530531        generic/semrw-$(if-expr defined(VBOX_WITH_LOCKLESS_SEMRW),lockless-,)generic.cpp \
     
    581582        generic/RTTimeLocalNow-generic.cpp \
    582583        generic/RTTimerCreate-generic.cpp \
     584        generic/RTThreadGetAffinity-stub-generic.cpp \
     585        generic/RTThreadSetAffinity-stub-generic.cpp \
     586        generic/RTThreadSetAffinityToCpu-generic.cpp \
    583587        generic/RTUuidCreate-generic.cpp \
    584588        generic/mppresent-generic.cpp \
     
    660664        generic/RTTimeLocalNow-generic.cpp \
    661665        generic/RTTimerCreate-generic.cpp \
     666        generic/RTThreadSetAffinityToCpu-generic.cpp \
    662667        generic/RTUuidCreate-generic.cpp \
    663668        generic/mppresent-generic.cpp \
     
    720725        generic/RTLogWriteDebugger-generic.cpp \
    721726        generic/RTProcDaemonize-generic.cpp \
     727        generic/RTThreadGetAffinity-stub-generic.cpp \
     728        generic/RTThreadSetAffinity-stub-generic.cpp \
     729        generic/RTThreadSetAffinityToCpu-generic.cpp \
    722730        generic/RTTimeLocalNow-generic.cpp \
    723731        generic/RTTimerCreate-generic.cpp \
     
    781789        generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
    782790        generic/RTSystemQueryDmiString-generic.cpp \
     791        generic/RTThreadGetAffinity-stub-generic.cpp \
     792        generic/RTThreadSetAffinity-stub-generic.cpp \
     793        generic/RTThreadSetAffinityToCpu-generic.cpp \
    783794        generic/RTTimeLocalNow-generic.cpp \
    784795        generic/RTTimerCreate-generic.cpp \
     
    842853        generic/RTSemEventMultiWait-2-ex-generic.cpp \
    843854        generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
     855        generic/RTThreadSetAffinityToCpu-generic.cpp \
    844856        generic/RTTimeLocalNow-generic.cpp \
    845857        generic/RTTimerCreate-generic.cpp \
     
    888900        r3/posix/utf8-posix.cpp \
    889901        r3/solaris/mp-solaris.cpp \
    890         r3/solaris/rtProcInitExePath-solaris.cpp
     902        r3/solaris/rtProcInitExePath-solaris.cpp \
     903        r3/solaris/thread-affinity-solaris.cpp
    891904RuntimeR3_SOURCES.solaris.amd64 = \
    892905        r3/solaris/coredumper-solaris.cpp \
     
    925938        generic/RTSystemQueryOSInfo-generic.cpp \
    926939        generic/RTSystemQueryDmiString-generic.cpp \
     940        generic/RTThreadGetAffinity-stub-generic.cpp \
     941        generic/RTThreadSetAffinity-stub-generic.cpp \
     942        generic/RTThreadSetAffinityToCpu-generic.cpp \
    927943        generic/RTTimeLocalNow-generic.cpp \
    928944        generic/RTUuidCreate-generic.cpp \
  • trunk/src/VBox/Runtime/r3/os2/thread-os2.cpp

    r36555 r37154  
    199199
    200200
    201 RTDECL(uint64_t) RTThreadGetAffinity(void)
     201RTR3DECL(int) RTThreadGetAffinity(PRTCPUSET pCpuSet)
     202{
     203    return VINF_SUCCESS;
     204}
     205
     206RTR3DECL(int) RTThreadGetAffinity(PRTCPUSET pCpuSet)
    202207{
    203208    union
     
    207212    } u;
    208213
    209     int rc = DosQueryThreadAffinity(AFNTY_THREAD, &u.mpaff);
    210     if (rc)
    211         u.u64 = 1;
    212     return u.u64;
    213 }
    214 
    215 
    216 RTDECL(int) RTThreadSetAffinity(uint64_t u64Mask)
     214    APIRET rc = DosQueryThreadAffinity(AFNTY_THREAD, &u.mpaff);
     215    if (!rc)
     216    {
     217        RTCpuSetFromU64(pCpuSet, u.u64);
     218        return VINF_SUCCESS;
     219    }
     220    return RTErrConvertFromOS2(rc);
     221}
     222
     223
     224RTR3DECL(int) RTThreadSetAffinity(PCRTCPUSET pCpuSet)
    217225{
    218226    union
     
    221229        MPAFFINITY mpaff;
    222230    } u;
    223     u.u64 = u64Mask;
     231    u.u64 = pCpuSet ? RTCpuSetToU64(pCpuSet) : UINT64_MAX;
    224232    int rc = DosSetThreadAffinity(&u.mpaff);
    225233    if (!rc)
  • trunk/src/VBox/Runtime/r3/posix/thread-posix.cpp

    r36912 r37154  
    384384
    385385
    386 RTR3DECL(uint64_t) RTThreadGetAffinity(void)
    387 {
    388     return 1;
    389 }
    390 
    391 
    392 RTR3DECL(int) RTThreadSetAffinity(uint64_t u64Mask)
    393 {
    394     if (u64Mask != 1)
    395         return VERR_INVALID_PARAMETER;
    396     return VINF_SUCCESS;
    397 }
    398 
    399 
    400386#ifdef RTTHREAD_POSIX_WITH_POKE
    401387RTDECL(int) RTThreadPoke(RTTHREAD hThread)
  • trunk/src/VBox/Runtime/r3/win/thread-win.cpp

    r36555 r37154  
    281281
    282282
    283 RTR3DECL(int) RTThreadSetAffinity(uint64_t u64Mask)
    284 {
    285     Assert((DWORD_PTR)u64Mask == u64Mask || u64Mask == ~(uint64_t)0);
    286     DWORD_PTR dwRet = SetThreadAffinityMask(GetCurrentThread(), (DWORD_PTR)u64Mask);
     283RTR3DECL(int) RTThreadSetAffinity(PCRTCPUSET pCpuSet)
     284{
     285    DWORD_PTR fNewMask = pCpuSet ? RTCpuSetToU64(pCpuSet) : ~(DWORD_PTR)0;
     286    DWORD_PTR dwRet = SetThreadAffinityMask(GetCurrentThread(), fNewMask);
    287287    if (dwRet)
    288288        return VINF_SUCCESS;
     
    294294
    295295
    296 RTR3DECL(uint64_t) RTThreadGetAffinity(void)
     296RTR3DECL(int) RTThreadGetAffinity(PRTCPUSET pCpuSet)
    297297{
    298298    /*
     
    309309            DWORD_PTR dwSet = SetThreadAffinityMask(hThread, dwRet);
    310310            Assert(dwSet == dwProcAff); NOREF(dwRet);
    311             return dwRet;
     311
     312            RTCpuSetFromU64(pCpuSet, (uint64_t)dwSet);
     313            return VINF_SUCCESS;
    312314        }
    313315    }
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