VirtualBox

Changeset 90416 in vbox for trunk/src


Ignore:
Timestamp:
Jul 29, 2021 9:10:03 PM (4 years ago)
Author:
vboxsync
Message:

IPRT: Adding RTThreadQueryTerminationStatus (ring-0). bugref:6695

Location:
trunk/src/VBox/Runtime
Files:
1 added
3 edited

Legend:

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

    r90283 r90416  
    31823182        generic/RTAssertShouldPanic-generic.cpp \
    31833183        generic/RTLogWriteStdOut-stub-generic.cpp \
     3184        generic/RTMpGetCoreCount-generic.cpp \
     3185        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    31843186        generic/RTTimerCreate-generic.cpp \
    31853187        generic/mppresent-generic-online.cpp \
    3186         generic/RTMpGetCoreCount-generic.cpp \
    31873188        generic/rtStrFormatKernelAddress-generic.cpp \
    31883189        nt/RTErrConvertFromNtStatus.cpp \
     
    33253326        generic/RTMpGetCoreCount-generic.cpp \
    33263327        generic/RTMpOnPair-generic.cpp \
     3328        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    33273329        generic/RTTimerCreate-generic.cpp \
    33283330        generic/memsafer-generic.cpp \
     
    33923394        generic/RTMpGetSet-generic.cpp \
    33933395        generic/RTMpIsCpuOnline-generic.cpp \
     3396        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    33943397        generic/RTTimerCreate-generic.cpp \
    33953398        generic/mppresent-generic.cpp \
     
    35133516        generic/RTAssertShouldPanic-generic.cpp \
    35143517        generic/RTLogWriteDebugger-generic.cpp \
     3518        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    35153519        generic/RTTimerCreate-generic.cpp \
    35163520        generic/mppresent-generic.cpp \
     
    35443548        generic/RTLogWriteStdOut-stub-generic.cpp \
    35453549        generic/RTMpGetCoreCount-generic.cpp \
     3550        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    35463551        generic/RTTimerCreate-generic.cpp \
    35473552        generic/mppresent-generic.cpp \
     
    35813586        generic/RTAssertShouldPanic-generic.cpp \
    35823587        generic/RTMpOnPair-generic.cpp \
     3588        generic/RTThreadQueryTerminationStatus-stub-generic.cpp \
    35833589        generic/RTTimerCreate-generic.cpp \
    35843590        generic/mppresent-generic.cpp \
  • trunk/src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c

    r82968 r90416  
    185185}
    186186
     187
     188RTDECL(int) RTThreadQueryTerminationStatus(RTTHREAD hThread)
     189{
     190    RT_NOREF(hThread);
     191    /** @todo implement. */
     192    return VERR_NOT_SUPPORTED;
     193}
     194
  • trunk/src/VBox/Runtime/r0drv/linux/thread-r0drv-linux.c

    r85698 r90416  
    233233RT_EXPORT_SYMBOL(RTThreadIsInInterrupt);
    234234
     235
     236RTDECL(int) RTThreadQueryTerminationStatus(RTTHREAD hThread)
     237{
     238    struct task_struct *pTask = current;
     239    AssertReturn(hThread == NIL_RTTHREAD, VERR_NOT_SUPPORTED);
     240
     241    /* Check out pending signals.  ASSUMES we can get away w/o locking
     242       anything because we're only reading the data.  */
     243    if (sigismember(&pTask->pending.signal, SIGKILL))
     244        return VINF_THREAD_IS_TERMINATING;
     245
     246#if RTLNX_VER_MIN(2,5,34)
     247    /* Check the pending signals shared with other threads in
     248       the same process/group.  ASSUME since we're alive that
     249       the signal_struct won't be freed while we're looking
     250       at it here... */
     251    {
     252# if RTLNX_VER_MIN(2,5,60)
     253        struct signal_struct *pSignal = current->signal;
     254# else
     255        struct signal_struct *pSignal = current->sig;
     256# endif
     257        if (   pSignal
     258            && sigismember(&pSignal->shared_pending.signal, SIGKILL))
     259            return VINF_THREAD_IS_TERMINATING;
     260    }
     261#endif
     262
     263    return VINF_SUCCESS;
     264}
     265RT_EXPORT_SYMBOL(RTThreadQueryTerminationStatus);
     266
Note: See TracChangeset for help on using the changeset viewer.

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