VirtualBox

Changeset 91801 in vbox for trunk


Ignore:
Timestamp:
Oct 18, 2021 2:33:13 AM (3 years ago)
Author:
vboxsync
Message:

SUPDrv: Try provide accurate argument counts for the functions so we can generate more optimal wrappers and void trouble with ellipsis and functions with too many arguments. bugref:10124

Location:
trunk/src/VBox/HostDrivers/Support
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp

    r91800 r91801  
    7676#endif
    7777
     78#ifdef __cplusplus
     79# if __cplusplus >= 201100 || RT_MSC_PREREQ(RT_MSC_VER_VS2019)
     80#  define SUPDRV_CAN_COUNT_FUNCTION_ARGS
     81#  ifdef _MSC_VER
     82#   pragma warning(push)
     83#   pragma warning(disable:4577)
     84#   include <type_traits>
     85#   pragma warning(pop)
     86
     87#  elif defined(RT_OS_DARWIN)
     88#   define _LIBCPP_CSTDDEF
     89#   include <__nullptr>
     90#   include <type_traits>
     91
     92#  else
     93#   include <type_traits>
     94#  endif
     95# endif
     96#endif
     97
     98
    7899/*
    79100 * Logging assignments:
     
    154175*   Global Variables                                                                                                             *
    155176*********************************************************************************************************************************/
    156 /** @def STKBACK
    157  * Indicates that the symbol needs to switch back to the kernel stack on darwin.
    158  * See @bugref{10124} for details. */
     177/** @def SUPEXP_CHECK_ARGS
     178 * This is for checking the argument count of the function in the entry,
     179 * just to make sure we don't accidentally export something the wrapper
     180 * can't deal with.
     181 *
     182 * Using some C++11 magic to do the counting.
     183 *
     184 * The error is reported by overflowing the SUPFUNC::cArgs field, so the
     185 * warnings can probably be a little mysterious.
     186 *
     187 * @note Doesn't work for CLANG 11.  Works for Visual C++, unless there
     188 *       are function pointers in the argument list.
     189 */
     190#if defined(SUPDRV_CAN_COUNT_FUNCTION_ARGS) && RT_CLANG_PREREQ(99, 0)
     191template <typename RetType, typename ... Types>
     192constexpr std::integral_constant<unsigned, sizeof ...(Types)>
     193CountFunctionArguments(RetType(RTCALL *)(Types ...))
     194{
     195    return std::integral_constant<unsigned, sizeof ...(Types)>{};
     196}
     197# define SUPEXP_CHECK_ARGS(a_cArgs, a_Name) \
     198    ((a_cArgs) >= decltype(CountFunctionArguments(a_Name))::value ? (uint8_t)(a_cArgs) : 1023)
     199
     200#else
     201# define SUPEXP_CHECK_ARGS(a_cArgs, a_Name)     a_cArgs
     202#endif
     203
     204/** @name Function table entry macros.
     205 * @note The SUPEXP_STK_BACKF macro is because VC++ has trouble with functions
     206 *       with function pointer arguments (probably noexcept related).
     207 * @{ */
     208#define SUPEXP_CUSTOM(a_cArgs, a_Name, a_Value) { #a_Name,      a_cArgs,                            (void *)(uintptr_t)(a_Value) }
     209#define SUPEXP_STK_OKAY(a_cArgs, a_Name)        { #a_Name,      SUPEXP_CHECK_ARGS(a_cArgs, a_Name), (void *)(uintptr_t)a_Name }
    159210#ifdef RT_OS_DARWIN
    160 # define STKBACK(a) "StkBack_" a
     211# define SUPEXP_STK_BACK(a_cArgs, a_Name) { "StkBack_" #a_Name, SUPEXP_CHECK_ARGS(a_cArgs, a_Name), (void *)(uintptr_t)a_Name }
    161212#else
    162 # define STKBACK(a) a
     213# define SUPEXP_STK_BACK(a_cArgs, a_Name)       { #a_Name,      SUPEXP_CHECK_ARGS(a_cArgs, a_Name), (void *)(uintptr_t)a_Name }
     214# ifdef _MSC_VER
     215#  define SUPEXP_STK_BACKF(a_cArgs, a_Name)     { #a_Name,      a_cArgs,                            (void *)(uintptr_t)a_Name }
     216# endif
    163217#endif
    164 /** @def STKOKAY
    165  * The oposite of STKBACK, just for make the table nicly aligned. */
    166 #define STKOKAY(a) a
    167 
    168 /** @name Function table entry macros.
    169  *  @{ */
    170 #define SUPEXP_CUSTOM(a_cArgs, a_Name, a_Value) { #a_Name,              a_cArgs,    (void *)(uintptr_t)(a_Value) }
    171 #define SUPEXP_STK_OKAY(a_cArgs, a_Name)        { #a_Name,              0,          (void *)(uintptr_t)a_Name }
    172 #ifdef RT_OS_DARWIN
    173 # define SUPEXP_STK_BACK(a_cArgs, a_Name)       { "StkBack_" #a_Name,   0,          (void *)(uintptr_t)a_Name }
    174 #else
    175 # define SUPEXP_STK_BACK(a_cArgs, a_Name)       { #a_Name,              0,          (void *)(uintptr_t)a_Name }
     218#ifndef SUPEXP_STK_BACKF
     219# define SUPEXP_STK_BACKF(a_cArgs, a_Name)      SUPEXP_STK_BACK(a_cArgs, a_Name)
    176220#endif
    177221/** @} */
     
    193237        /* Entries with absolute addresses determined at runtime, fixup
    194238           code makes ugly ASSUMPTIONS about the order here: */
    195     SUPEXP_CUSTOM(  0,  SUPR0AbsIs64bit,          0),
    196     SUPEXP_CUSTOM(  0,  SUPR0Abs64bitKernelCS,    0),
    197     SUPEXP_CUSTOM(  0,  SUPR0Abs64bitKernelSS,    0),
    198     SUPEXP_CUSTOM(  0,  SUPR0Abs64bitKernelDS,    0),
    199     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelCS,         0),
    200     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelSS,         0),
    201     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelDS,         0),
    202     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelES,         0),
    203     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelFS,         0),
    204     SUPEXP_CUSTOM(  0,  SUPR0AbsKernelGS,         0),
     239    SUPEXP_CUSTOM(      0,  SUPR0AbsIs64bit,          0),
     240    SUPEXP_CUSTOM(      0,  SUPR0Abs64bitKernelCS,    0),
     241    SUPEXP_CUSTOM(      0,  SUPR0Abs64bitKernelSS,    0),
     242    SUPEXP_CUSTOM(      0,  SUPR0Abs64bitKernelDS,    0),
     243    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelCS,         0),
     244    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelSS,         0),
     245    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelDS,         0),
     246    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelES,         0),
     247    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelFS,         0),
     248    SUPEXP_CUSTOM(      0,  SUPR0AbsKernelGS,         0),
    205249        /* Normal function & data pointers: */
    206     SUPEXP_CUSTOM(  0,  g_pSUPGlobalInfoPage,     &g_pSUPGlobalInfoPage),            /* SED: DATA */
    207     SUPEXP_STK_OKAY(0,  SUPGetGIP),
    208     SUPEXP_STK_BACK(22, SUPReadTscWithDelta),
    209     SUPEXP_STK_BACK(22, SUPGetTscDeltaSlow),
    210     SUPEXP_STK_BACK(22, SUPGetCpuHzFromGipForAsyncMode),
    211     SUPEXP_STK_OKAY(0,  SUPIsTscFreqCompatible),
    212     SUPEXP_STK_OKAY(0,  SUPIsTscFreqCompatibleEx),
    213     SUPEXP_STK_BACK(22, SUPR0BadContext),
    214     SUPEXP_STK_BACK(22, SUPR0ComponentDeregisterFactory),
    215     SUPEXP_STK_BACK(22, SUPR0ComponentQueryFactory),
    216     SUPEXP_STK_BACK(22, SUPR0ComponentRegisterFactory),
    217     SUPEXP_STK_BACK(22, SUPR0ContAlloc),
    218     SUPEXP_STK_BACK(22, SUPR0ContFree),
    219     SUPEXP_STK_BACK(22, SUPR0ChangeCR4),
    220     SUPEXP_STK_BACK(22, SUPR0EnableVTx),
    221     SUPEXP_STK_BACK(22, SUPR0SuspendVTxOnCpu),
    222     SUPEXP_STK_BACK(22, SUPR0ResumeVTxOnCpu),
    223     SUPEXP_STK_OKAY(0,  SUPR0GetCurrentGdtRw),
    224     SUPEXP_STK_OKAY(0,  SUPR0GetKernelFeatures),
    225     SUPEXP_STK_BACK(22, SUPR0GetHwvirtMsrs),
    226     SUPEXP_STK_BACK(22, SUPR0GetPagingMode),
    227     SUPEXP_STK_BACK(22, SUPR0GetSvmUsability),
    228     SUPEXP_STK_BACK(22, SUPR0GetVTSupport),
    229     SUPEXP_STK_BACK(22, SUPR0GetVmxUsability),
    230     SUPEXP_STK_BACK(22, SUPR0LdrIsLockOwnerByMod),
    231     SUPEXP_STK_BACK(22, SUPR0LdrLock),
    232     SUPEXP_STK_BACK(22, SUPR0LdrUnlock),
    233     SUPEXP_STK_BACK(22, SUPR0LdrModByName),
    234     SUPEXP_STK_BACK(22, SUPR0LdrModRelease),
    235     SUPEXP_STK_BACK(22, SUPR0LdrModRetain),
    236     SUPEXP_STK_BACK(22, SUPR0LockMem),
    237     SUPEXP_STK_BACK(22, SUPR0LowAlloc),
    238     SUPEXP_STK_BACK(22, SUPR0LowFree),
    239     SUPEXP_STK_BACK(22, SUPR0MemAlloc),
    240     SUPEXP_STK_BACK(22, SUPR0MemFree),
    241     SUPEXP_STK_BACK(22, SUPR0MemGetPhys),
    242     SUPEXP_STK_BACK(22, SUPR0ObjAddRef),
    243     SUPEXP_STK_BACK(22, SUPR0ObjAddRefEx),
    244     SUPEXP_STK_BACK(22, SUPR0ObjRegister),
    245     SUPEXP_STK_BACK(22, SUPR0ObjRelease),
    246     SUPEXP_STK_BACK(22, SUPR0ObjVerifyAccess),
    247     SUPEXP_STK_BACK(22, SUPR0PageAllocEx),
    248     SUPEXP_STK_BACK(22, SUPR0PageFree),
    249     SUPEXP_STK_BACK(22, SUPR0PageMapKernel),
    250     SUPEXP_STK_BACK(22, SUPR0PageProtect),
     250    SUPEXP_CUSTOM(      0,  g_pSUPGlobalInfoPage,     &g_pSUPGlobalInfoPage),            /* SED: DATA */
     251    SUPEXP_STK_OKAY(    0,  SUPGetGIP),
     252    SUPEXP_STK_BACK(    1, SUPReadTscWithDelta),
     253    SUPEXP_STK_BACK(    1, SUPGetTscDeltaSlow),
     254    SUPEXP_STK_BACK(    1, SUPGetCpuHzFromGipForAsyncMode),
     255    SUPEXP_STK_OKAY(    3,  SUPIsTscFreqCompatible),
     256    SUPEXP_STK_OKAY(    3,  SUPIsTscFreqCompatibleEx),
     257    SUPEXP_STK_BACK(    4, SUPR0BadContext),
     258    SUPEXP_STK_BACK(    2, SUPR0ComponentDeregisterFactory),
     259    SUPEXP_STK_BACK(    4, SUPR0ComponentQueryFactory),
     260    SUPEXP_STK_BACK(    2, SUPR0ComponentRegisterFactory),
     261    SUPEXP_STK_BACK(    5, SUPR0ContAlloc),
     262    SUPEXP_STK_BACK(    2, SUPR0ContFree),
     263    SUPEXP_STK_BACK(    2, SUPR0ChangeCR4),
     264    SUPEXP_STK_BACK(    1, SUPR0EnableVTx),
     265    SUPEXP_STK_BACK(    0, SUPR0SuspendVTxOnCpu),
     266    SUPEXP_STK_BACK(    1, SUPR0ResumeVTxOnCpu),
     267    SUPEXP_STK_OKAY(    1,  SUPR0GetCurrentGdtRw),
     268    SUPEXP_STK_OKAY(    0,  SUPR0GetKernelFeatures),
     269    SUPEXP_STK_BACK(    3, SUPR0GetHwvirtMsrs),
     270    SUPEXP_STK_BACK(    0, SUPR0GetPagingMode),
     271    SUPEXP_STK_BACK(    1, SUPR0GetSvmUsability),
     272    SUPEXP_STK_BACK(    1, SUPR0GetVTSupport),
     273    SUPEXP_STK_BACK(    1, SUPR0GetVmxUsability),
     274    SUPEXP_STK_BACK(    2, SUPR0LdrIsLockOwnerByMod),
     275    SUPEXP_STK_BACK(    1, SUPR0LdrLock),
     276    SUPEXP_STK_BACK(    1, SUPR0LdrUnlock),
     277    SUPEXP_STK_BACK(    3, SUPR0LdrModByName),
     278    SUPEXP_STK_BACK(    2, SUPR0LdrModRelease),
     279    SUPEXP_STK_BACK(    2, SUPR0LdrModRetain),
     280    SUPEXP_STK_BACK(    4, SUPR0LockMem),
     281    SUPEXP_STK_BACK(    5, SUPR0LowAlloc),
     282    SUPEXP_STK_BACK(    2, SUPR0LowFree),
     283    SUPEXP_STK_BACK(    4, SUPR0MemAlloc),
     284    SUPEXP_STK_BACK(    2, SUPR0MemFree),
     285    SUPEXP_STK_BACK(    3, SUPR0MemGetPhys),
     286    SUPEXP_STK_BACK(    2, SUPR0ObjAddRef),
     287    SUPEXP_STK_BACK(    3, SUPR0ObjAddRefEx),
     288    SUPEXP_STK_BACKF(   5, SUPR0ObjRegister),
     289    SUPEXP_STK_BACK(    2, SUPR0ObjRelease),
     290    SUPEXP_STK_BACK(    3, SUPR0ObjVerifyAccess),
     291    SUPEXP_STK_BACK(    6, SUPR0PageAllocEx),
     292    SUPEXP_STK_BACK(    2, SUPR0PageFree),
     293    SUPEXP_STK_BACK(    6, SUPR0PageMapKernel),
     294    SUPEXP_STK_BACK(    6, SUPR0PageProtect),
    251295#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
    252     SUPEXP_STK_OKAY(0,  SUPR0HCPhysToVirt),         /* only-linux, only-solaris, only-freebsd */
     296    SUPEXP_STK_OKAY(    2,  SUPR0HCPhysToVirt),         /* only-linux, only-solaris, only-freebsd */
    253297#endif
    254     SUPEXP_STK_BACK(22, SUPR0PrintfV),
    255     SUPEXP_STK_BACK(22, SUPR0GetSessionGVM),
    256     SUPEXP_STK_BACK(22, SUPR0GetSessionVM),
    257     SUPEXP_STK_BACK(22, SUPR0SetSessionVM),
    258     SUPEXP_STK_BACK(22, SUPR0TscDeltaMeasureBySetIndex),
    259     SUPEXP_STK_BACK(22, SUPR0TracerDeregisterDrv),
    260     SUPEXP_STK_BACK(22, SUPR0TracerDeregisterImpl),
    261     SUPEXP_STK_BACK(22, SUPR0TracerFireProbe),
    262     SUPEXP_STK_BACK(22, SUPR0TracerRegisterDrv),
    263     SUPEXP_STK_BACK(22, SUPR0TracerRegisterImpl),
    264     SUPEXP_STK_BACK(22, SUPR0TracerRegisterModule),
    265     SUPEXP_STK_BACK(22, SUPR0TracerUmodProbeFire),
    266     SUPEXP_STK_BACK(22, SUPR0UnlockMem),
     298    SUPEXP_STK_BACK(    2, SUPR0PrintfV),
     299    SUPEXP_STK_BACK(    1, SUPR0GetSessionGVM),
     300    SUPEXP_STK_BACK(    1, SUPR0GetSessionVM),
     301    SUPEXP_STK_BACK(    3, SUPR0SetSessionVM),
     302    SUPEXP_STK_BACK(    6, SUPR0TscDeltaMeasureBySetIndex),
     303    SUPEXP_STK_BACK(    1, SUPR0TracerDeregisterDrv),
     304    SUPEXP_STK_BACK(    2, SUPR0TracerDeregisterImpl),
     305    SUPEXP_STK_BACK(    6, SUPR0TracerFireProbe),
     306    SUPEXP_STK_BACK(    3, SUPR0TracerRegisterDrv),
     307    SUPEXP_STK_BACK(    4, SUPR0TracerRegisterImpl),
     308    SUPEXP_STK_BACK(    2, SUPR0TracerRegisterModule),
     309    SUPEXP_STK_BACK(    2, SUPR0TracerUmodProbeFire),
     310    SUPEXP_STK_BACK(    2, SUPR0UnlockMem),
    267311#ifdef RT_OS_WINDOWS
    268     SUPEXP_STK_BACK(22, SUPR0IoCtlSetupForHandle),  /* only-windows */
    269     SUPEXP_STK_BACK(22, SUPR0IoCtlPerform),         /* only-windows */
    270     SUPEXP_STK_BACK(22, SUPR0IoCtlCleanup),         /* only-windows */
     312    SUPEXP_STK_BACK(    4, SUPR0IoCtlSetupForHandle),  /* only-windows */
     313    SUPEXP_STK_BACK(    9, SUPR0IoCtlPerform),         /* only-windows */
     314    SUPEXP_STK_BACK(    1, SUPR0IoCtlCleanup),         /* only-windows */
    271315#endif
    272     SUPEXP_STK_BACK(22, SUPSemEventClose),
    273     SUPEXP_STK_BACK(22, SUPSemEventCreate),
    274     SUPEXP_STK_BACK(22, SUPSemEventGetResolution),
    275     SUPEXP_STK_BACK(22, SUPSemEventMultiClose),
    276     SUPEXP_STK_BACK(22, SUPSemEventMultiCreate),
    277     SUPEXP_STK_BACK(22, SUPSemEventMultiGetResolution),
    278     SUPEXP_STK_BACK(22, SUPSemEventMultiReset),
    279     SUPEXP_STK_BACK(22, SUPSemEventMultiSignal),
    280     SUPEXP_STK_BACK(22, SUPSemEventMultiWait),
    281     SUPEXP_STK_BACK(22, SUPSemEventMultiWaitNoResume),
    282     SUPEXP_STK_BACK(22, SUPSemEventMultiWaitNsAbsIntr),
    283     SUPEXP_STK_BACK(22, SUPSemEventMultiWaitNsRelIntr),
    284     SUPEXP_STK_BACK(22, SUPSemEventSignal),
    285     SUPEXP_STK_BACK(22, SUPSemEventWait),
    286     SUPEXP_STK_BACK(22, SUPSemEventWaitNoResume),
    287     SUPEXP_STK_BACK(22, SUPSemEventWaitNsAbsIntr),
    288     SUPEXP_STK_BACK(22, SUPSemEventWaitNsRelIntr),
    289 
    290     SUPEXP_STK_BACK(22, RTAssertAreQuiet),
    291     SUPEXP_STK_BACK(22, RTAssertMayPanic),
    292     SUPEXP_STK_BACK(22, RTAssertMsg1),
    293     SUPEXP_STK_BACK(22, RTAssertMsg2AddV),
    294     SUPEXP_STK_BACK(22, RTAssertMsg2V),
    295     SUPEXP_STK_BACK(22, RTAssertSetMayPanic),
    296     SUPEXP_STK_BACK(22, RTAssertSetQuiet),
    297     SUPEXP_STK_OKAY(0,  RTCrc32),
    298     SUPEXP_STK_OKAY(0,  RTCrc32Finish),
    299     SUPEXP_STK_OKAY(0,  RTCrc32Process),
    300     SUPEXP_STK_OKAY(0,  RTCrc32Start),
    301     SUPEXP_STK_OKAY(0,  RTErrConvertFromErrno),
    302     SUPEXP_STK_OKAY(0,  RTErrConvertToErrno),
    303     SUPEXP_STK_BACK(22, RTHandleTableAllocWithCtx),
    304     SUPEXP_STK_BACK(22, RTHandleTableCreate),
    305     SUPEXP_STK_BACK(22, RTHandleTableCreateEx),
    306     SUPEXP_STK_BACK(22, RTHandleTableDestroy),
    307     SUPEXP_STK_BACK(22, RTHandleTableFreeWithCtx),
    308     SUPEXP_STK_BACK(22, RTHandleTableLookupWithCtx),
    309     SUPEXP_STK_BACK(22, RTLogBulkUpdate),
    310     SUPEXP_STK_BACK(22, RTLogCheckGroupFlags),
    311     SUPEXP_STK_BACK(22, RTLogCreateExV),
    312     SUPEXP_STK_BACK(22, RTLogDestroy),
    313     SUPEXP_STK_BACK(22, RTLogDefaultInstance),
    314     SUPEXP_STK_BACK(22, RTLogDefaultInstanceEx),
    315     SUPEXP_STK_BACK(22, SUPR0DefaultLogInstanceEx),
    316     SUPEXP_STK_BACK(22, RTLogGetDefaultInstance),
    317     SUPEXP_STK_BACK(22, RTLogGetDefaultInstanceEx),
    318     SUPEXP_STK_BACK(22, SUPR0GetDefaultLogInstanceEx),
    319     SUPEXP_STK_BACK(22, RTLogLoggerExV),
    320     SUPEXP_STK_BACK(22, RTLogPrintfV),
    321     SUPEXP_STK_BACK(22, RTLogRelGetDefaultInstance),
    322     SUPEXP_STK_BACK(22, RTLogRelGetDefaultInstanceEx),
    323     SUPEXP_STK_BACK(22, SUPR0GetDefaultLogRelInstanceEx),
    324     SUPEXP_STK_BACK(22, RTLogSetDefaultInstanceThread),
    325     SUPEXP_STK_BACK(22, RTLogSetFlushCallback),
    326     SUPEXP_STK_BACK(22, RTLogSetR0ProgramStart),
    327     SUPEXP_STK_BACK(22, RTLogSetR0ThreadNameV),
    328     SUPEXP_STK_BACK(22, RTMemAllocExTag),
    329     SUPEXP_STK_BACK(22, RTMemAllocTag),
    330     SUPEXP_STK_BACK(22, RTMemAllocVarTag),
    331     SUPEXP_STK_BACK(22, RTMemAllocZTag),
    332     SUPEXP_STK_BACK(22, RTMemAllocZVarTag),
    333     SUPEXP_STK_BACK(22, RTMemDupExTag),
    334     SUPEXP_STK_BACK(22, RTMemDupTag),
    335     SUPEXP_STK_BACK(22, RTMemFree),
    336     SUPEXP_STK_BACK(22, RTMemFreeEx),
    337     SUPEXP_STK_BACK(22, RTMemReallocTag),
    338     SUPEXP_STK_BACK(22, RTMpCpuId),
    339     SUPEXP_STK_BACK(22, RTMpCpuIdFromSetIndex),
    340     SUPEXP_STK_BACK(22, RTMpCpuIdToSetIndex),
    341     SUPEXP_STK_BACK(22, RTMpCurSetIndex),
    342     SUPEXP_STK_BACK(22, RTMpCurSetIndexAndId),
    343     SUPEXP_STK_BACK(22, RTMpGetArraySize),
    344     SUPEXP_STK_BACK(22, RTMpGetCount),
    345     SUPEXP_STK_BACK(22, RTMpGetMaxCpuId),
    346     SUPEXP_STK_BACK(22, RTMpGetOnlineCount),
    347     SUPEXP_STK_BACK(22, RTMpGetOnlineSet),
    348     SUPEXP_STK_BACK(22, RTMpGetSet),
    349     SUPEXP_STK_BACK(22, RTMpIsCpuOnline),
    350     SUPEXP_STK_BACK(22, RTMpIsCpuPossible),
    351     SUPEXP_STK_BACK(22, RTMpIsCpuWorkPending),
    352     SUPEXP_STK_BACK(22, RTMpNotificationDeregister),
    353     SUPEXP_STK_BACK(22, RTMpNotificationRegister),
    354     SUPEXP_STK_BACK(22, RTMpOnAll),
    355     SUPEXP_STK_BACK(22, RTMpOnOthers),
    356     SUPEXP_STK_BACK(22, RTMpOnSpecific),
    357     SUPEXP_STK_BACK(22, RTMpPokeCpu),
    358     SUPEXP_STK_OKAY(0,  RTNetIPv4AddDataChecksum),
    359     SUPEXP_STK_OKAY(0,  RTNetIPv4AddTCPChecksum),
    360     SUPEXP_STK_OKAY(0,  RTNetIPv4AddUDPChecksum),
    361     SUPEXP_STK_OKAY(0,  RTNetIPv4FinalizeChecksum),
    362     SUPEXP_STK_OKAY(0,  RTNetIPv4HdrChecksum),
    363     SUPEXP_STK_OKAY(0,  RTNetIPv4IsDHCPValid),
    364     SUPEXP_STK_OKAY(0,  RTNetIPv4IsHdrValid),
    365     SUPEXP_STK_OKAY(0,  RTNetIPv4IsTCPSizeValid),
    366     SUPEXP_STK_OKAY(0,  RTNetIPv4IsTCPValid),
    367     SUPEXP_STK_OKAY(0,  RTNetIPv4IsUDPSizeValid),
    368     SUPEXP_STK_OKAY(0,  RTNetIPv4IsUDPValid),
    369     SUPEXP_STK_OKAY(0,  RTNetIPv4PseudoChecksum),
    370     SUPEXP_STK_OKAY(0,  RTNetIPv4PseudoChecksumBits),
    371     SUPEXP_STK_OKAY(0,  RTNetIPv4TCPChecksum),
    372     SUPEXP_STK_OKAY(0,  RTNetIPv4UDPChecksum),
    373     SUPEXP_STK_OKAY(0,  RTNetIPv6PseudoChecksum),
    374     SUPEXP_STK_OKAY(0,  RTNetIPv6PseudoChecksumBits),
    375     SUPEXP_STK_OKAY(0,  RTNetIPv6PseudoChecksumEx),
    376     SUPEXP_STK_OKAY(0,  RTNetTCPChecksum),
    377     SUPEXP_STK_OKAY(0,  RTNetUDPChecksum),
    378     SUPEXP_STK_BACK(22, RTPowerNotificationDeregister),
    379     SUPEXP_STK_BACK(22, RTPowerNotificationRegister),
    380     SUPEXP_STK_BACK(22, RTProcSelf),
    381     SUPEXP_STK_BACK(22, RTR0AssertPanicSystem),
     316    SUPEXP_STK_BACK(    2, SUPSemEventClose),
     317    SUPEXP_STK_BACK(    2, SUPSemEventCreate),
     318    SUPEXP_STK_BACK(    1, SUPSemEventGetResolution),
     319    SUPEXP_STK_BACK(    2, SUPSemEventMultiClose),
     320    SUPEXP_STK_BACK(    2, SUPSemEventMultiCreate),
     321    SUPEXP_STK_BACK(    1, SUPSemEventMultiGetResolution),
     322    SUPEXP_STK_BACK(    2, SUPSemEventMultiReset),
     323    SUPEXP_STK_BACK(    2, SUPSemEventMultiSignal),
     324    SUPEXP_STK_BACK(    3, SUPSemEventMultiWait),
     325    SUPEXP_STK_BACK(    3, SUPSemEventMultiWaitNoResume),
     326    SUPEXP_STK_BACK(    3, SUPSemEventMultiWaitNsAbsIntr),
     327    SUPEXP_STK_BACK(    3, SUPSemEventMultiWaitNsRelIntr),
     328    SUPEXP_STK_BACK(    2, SUPSemEventSignal),
     329    SUPEXP_STK_BACK(    3, SUPSemEventWait),
     330    SUPEXP_STK_BACK(    3, SUPSemEventWaitNoResume),
     331    SUPEXP_STK_BACK(    3, SUPSemEventWaitNsAbsIntr),
     332    SUPEXP_STK_BACK(    3, SUPSemEventWaitNsRelIntr),
     333
     334    SUPEXP_STK_BACK(    0, RTAssertAreQuiet),
     335    SUPEXP_STK_BACK(    0, RTAssertMayPanic),
     336    SUPEXP_STK_BACK(    4, RTAssertMsg1),
     337    SUPEXP_STK_BACK(    2, RTAssertMsg2AddV),
     338    SUPEXP_STK_BACK(    2, RTAssertMsg2V),
     339    SUPEXP_STK_BACK(    1, RTAssertSetMayPanic),
     340    SUPEXP_STK_BACK(    1, RTAssertSetQuiet),
     341    SUPEXP_STK_OKAY(    2,  RTCrc32),
     342    SUPEXP_STK_OKAY(    1,  RTCrc32Finish),
     343    SUPEXP_STK_OKAY(    3,  RTCrc32Process),
     344    SUPEXP_STK_OKAY(    0,  RTCrc32Start),
     345    SUPEXP_STK_OKAY(    1,  RTErrConvertFromErrno),
     346    SUPEXP_STK_OKAY(    1,  RTErrConvertToErrno),
     347    SUPEXP_STK_BACK(    4, RTHandleTableAllocWithCtx),
     348    SUPEXP_STK_BACK(    1, RTHandleTableCreate),
     349    SUPEXP_STK_BACKF(   6, RTHandleTableCreateEx),
     350    SUPEXP_STK_BACKF(   3, RTHandleTableDestroy),
     351    SUPEXP_STK_BACK(    3, RTHandleTableFreeWithCtx),
     352    SUPEXP_STK_BACK(    3, RTHandleTableLookupWithCtx),
     353    SUPEXP_STK_BACK(    5, RTLogBulkUpdate),
     354    SUPEXP_STK_BACK(    2, RTLogCheckGroupFlags),
     355    SUPEXP_STK_BACKF(   17, RTLogCreateExV),
     356    SUPEXP_STK_BACK(    1, RTLogDestroy),
     357    SUPEXP_STK_BACK(    0, RTLogDefaultInstance),
     358    SUPEXP_STK_BACK(    1, RTLogDefaultInstanceEx),
     359    SUPEXP_STK_BACK(    1, SUPR0DefaultLogInstanceEx),
     360    SUPEXP_STK_BACK(    0, RTLogGetDefaultInstance),
     361    SUPEXP_STK_BACK(    1, RTLogGetDefaultInstanceEx),
     362    SUPEXP_STK_BACK(    1, SUPR0GetDefaultLogInstanceEx),
     363    SUPEXP_STK_BACK(    5, RTLogLoggerExV),
     364    SUPEXP_STK_BACK(    2, RTLogPrintfV),
     365    SUPEXP_STK_BACK(    0, RTLogRelGetDefaultInstance),
     366    SUPEXP_STK_BACK(    1, RTLogRelGetDefaultInstanceEx),
     367    SUPEXP_STK_BACK(    1, SUPR0GetDefaultLogRelInstanceEx),
     368    SUPEXP_STK_BACK(    2, RTLogSetDefaultInstanceThread),
     369    SUPEXP_STK_BACKF(   2, RTLogSetFlushCallback),
     370    SUPEXP_STK_BACK(    2, RTLogSetR0ProgramStart),
     371    SUPEXP_STK_BACK(    3, RTLogSetR0ThreadNameV),
     372    SUPEXP_STK_BACK(    5, RTMemAllocExTag),
     373    SUPEXP_STK_BACK(    2, RTMemAllocTag),
     374    SUPEXP_STK_BACK(    2, RTMemAllocVarTag),
     375    SUPEXP_STK_BACK(    2, RTMemAllocZTag),
     376    SUPEXP_STK_BACK(    2, RTMemAllocZVarTag),
     377    SUPEXP_STK_BACK(    4, RTMemDupExTag),
     378    SUPEXP_STK_BACK(    3, RTMemDupTag),
     379    SUPEXP_STK_BACK(    1, RTMemFree),
     380    SUPEXP_STK_BACK(    2, RTMemFreeEx),
     381    SUPEXP_STK_BACK(    3, RTMemReallocTag),
     382    SUPEXP_STK_BACK(    0, RTMpCpuId),
     383    SUPEXP_STK_BACK(    1, RTMpCpuIdFromSetIndex),
     384    SUPEXP_STK_BACK(    1, RTMpCpuIdToSetIndex),
     385    SUPEXP_STK_BACK(    0, RTMpCurSetIndex),
     386    SUPEXP_STK_BACK(    1, RTMpCurSetIndexAndId),
     387    SUPEXP_STK_BACK(    0, RTMpGetArraySize),
     388    SUPEXP_STK_BACK(    0, RTMpGetCount),
     389    SUPEXP_STK_BACK(    0, RTMpGetMaxCpuId),
     390    SUPEXP_STK_BACK(    0, RTMpGetOnlineCount),
     391    SUPEXP_STK_BACK(    1, RTMpGetOnlineSet),
     392    SUPEXP_STK_BACK(    1, RTMpGetSet),
     393    SUPEXP_STK_BACK(    1, RTMpIsCpuOnline),
     394    SUPEXP_STK_BACK(    1, RTMpIsCpuPossible),
     395    SUPEXP_STK_BACK(    0, RTMpIsCpuWorkPending),
     396    SUPEXP_STK_BACKF(   2, RTMpNotificationDeregister),
     397    SUPEXP_STK_BACKF(   2, RTMpNotificationRegister),
     398    SUPEXP_STK_BACKF(   3, RTMpOnAll),
     399    SUPEXP_STK_BACKF(   3, RTMpOnOthers),
     400    SUPEXP_STK_BACKF(   4, RTMpOnSpecific),
     401    SUPEXP_STK_BACK(    1, RTMpPokeCpu),
     402    SUPEXP_STK_OKAY(    4,  RTNetIPv4AddDataChecksum),
     403    SUPEXP_STK_OKAY(    2,  RTNetIPv4AddTCPChecksum),
     404    SUPEXP_STK_OKAY(    2,  RTNetIPv4AddUDPChecksum),
     405    SUPEXP_STK_OKAY(    1,  RTNetIPv4FinalizeChecksum),
     406    SUPEXP_STK_OKAY(    1,  RTNetIPv4HdrChecksum),
     407    SUPEXP_STK_OKAY(    4,  RTNetIPv4IsDHCPValid),
     408    SUPEXP_STK_OKAY(    4,  RTNetIPv4IsHdrValid),
     409    SUPEXP_STK_OKAY(    4,  RTNetIPv4IsTCPSizeValid),
     410    SUPEXP_STK_OKAY(    6,  RTNetIPv4IsTCPValid),
     411    SUPEXP_STK_OKAY(    3,  RTNetIPv4IsUDPSizeValid),
     412    SUPEXP_STK_OKAY(    5,  RTNetIPv4IsUDPValid),
     413    SUPEXP_STK_OKAY(    1,  RTNetIPv4PseudoChecksum),
     414    SUPEXP_STK_OKAY(    4,  RTNetIPv4PseudoChecksumBits),
     415    SUPEXP_STK_OKAY(    3,  RTNetIPv4TCPChecksum),
     416    SUPEXP_STK_OKAY(    3,  RTNetIPv4UDPChecksum),
     417    SUPEXP_STK_OKAY(    1,  RTNetIPv6PseudoChecksum),
     418    SUPEXP_STK_OKAY(    4,  RTNetIPv6PseudoChecksumBits),
     419    SUPEXP_STK_OKAY(    3,  RTNetIPv6PseudoChecksumEx),
     420    SUPEXP_STK_OKAY(    4,  RTNetTCPChecksum),
     421    SUPEXP_STK_OKAY(    2,  RTNetUDPChecksum),
     422    SUPEXP_STK_BACKF(   2, RTPowerNotificationDeregister),
     423    SUPEXP_STK_BACKF(   2, RTPowerNotificationRegister),
     424    SUPEXP_STK_BACK(    0, RTProcSelf),
     425    SUPEXP_STK_BACK(    0, RTR0AssertPanicSystem),
    382426#if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS)
    383     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoOpen),          /* only-darwin, only-solaris, only-windows */
    384     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoQueryMember),   /* only-darwin, only-solaris, only-windows */
     427    SUPEXP_STK_BACK(    2, RTR0DbgKrnlInfoOpen),          /* only-darwin, only-solaris, only-windows */
     428    SUPEXP_STK_BACK(    5, RTR0DbgKrnlInfoQueryMember),   /* only-darwin, only-solaris, only-windows */
    385429# if defined(RT_OS_SOLARIS)
    386     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoQuerySize),     /* only-solaris */
     430    SUPEXP_STK_BACK(    4, RTR0DbgKrnlInfoQuerySize),     /* only-solaris */
    387431# endif
    388     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoQuerySymbol),   /* only-darwin, only-solaris, only-windows */
    389     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoRelease),       /* only-darwin, only-solaris, only-windows */
    390     SUPEXP_STK_BACK(22, RTR0DbgKrnlInfoRetain),        /* only-darwin, only-solaris, only-windows */
     432    SUPEXP_STK_BACK(    4, RTR0DbgKrnlInfoQuerySymbol),   /* only-darwin, only-solaris, only-windows */
     433    SUPEXP_STK_BACK(    1, RTR0DbgKrnlInfoRelease),       /* only-darwin, only-solaris, only-windows */
     434    SUPEXP_STK_BACK(    1, RTR0DbgKrnlInfoRetain),        /* only-darwin, only-solaris, only-windows */
    391435#endif
    392     SUPEXP_STK_BACK(22, RTR0MemAreKrnlAndUsrDifferent),
    393     SUPEXP_STK_BACK(22, RTR0MemKernelIsValidAddr),
    394     SUPEXP_STK_BACK(22, RTR0MemKernelCopyFrom),
    395     SUPEXP_STK_BACK(22, RTR0MemKernelCopyTo),
    396     SUPEXP_STK_OKAY(0,  RTR0MemObjAddress),
    397     SUPEXP_STK_OKAY(0,  RTR0MemObjAddressR3),
    398     SUPEXP_STK_BACK(22, RTR0MemObjAllocContTag),
    399     SUPEXP_STK_BACK(22, RTR0MemObjAllocLargeTag),
    400     SUPEXP_STK_BACK(22, RTR0MemObjAllocLowTag),
    401     SUPEXP_STK_BACK(22, RTR0MemObjAllocPageTag),
    402     SUPEXP_STK_BACK(22, RTR0MemObjAllocPhysExTag),
    403     SUPEXP_STK_BACK(22, RTR0MemObjAllocPhysNCTag),
    404     SUPEXP_STK_BACK(22, RTR0MemObjAllocPhysTag),
    405     SUPEXP_STK_BACK(22, RTR0MemObjEnterPhysTag),
    406     SUPEXP_STK_BACK(22, RTR0MemObjFree),
    407     SUPEXP_STK_BACK(22, RTR0MemObjGetPagePhysAddr),
    408     SUPEXP_STK_OKAY(0,  RTR0MemObjIsMapping),
    409     SUPEXP_STK_BACK(22, RTR0MemObjLockUserTag),
    410     SUPEXP_STK_BACK(22, RTR0MemObjLockKernelTag),
    411     SUPEXP_STK_BACK(22, RTR0MemObjMapKernelExTag),
    412     SUPEXP_STK_BACK(22, RTR0MemObjMapKernelTag),
    413     SUPEXP_STK_BACK(22, RTR0MemObjMapUserTag),
    414     SUPEXP_STK_BACK(22, RTR0MemObjMapUserExTag),
    415     SUPEXP_STK_BACK(22, RTR0MemObjProtect),
    416     SUPEXP_STK_OKAY(0,  RTR0MemObjSize),
    417     SUPEXP_STK_BACK(22, RTR0MemUserCopyFrom),
    418     SUPEXP_STK_BACK(22, RTR0MemUserCopyTo),
    419     SUPEXP_STK_BACK(22, RTR0MemUserIsValidAddr),
    420     SUPEXP_STK_BACK(22, RTR0ProcHandleSelf),
    421     SUPEXP_STK_BACK(22, RTSemEventCreate),
    422     SUPEXP_STK_BACK(22, RTSemEventDestroy),
    423     SUPEXP_STK_BACK(22, RTSemEventGetResolution),
    424     SUPEXP_STK_BACK(22, RTSemEventIsSignalSafe),
    425     SUPEXP_STK_BACK(22, RTSemEventMultiCreate),
    426     SUPEXP_STK_BACK(22, RTSemEventMultiDestroy),
    427     SUPEXP_STK_BACK(22, RTSemEventMultiGetResolution),
    428     SUPEXP_STK_BACK(22, RTSemEventMultiIsSignalSafe),
    429     SUPEXP_STK_BACK(22, RTSemEventMultiReset),
    430     SUPEXP_STK_BACK(22, RTSemEventMultiSignal),
    431     SUPEXP_STK_BACK(22, RTSemEventMultiWait),
    432     SUPEXP_STK_BACK(22, RTSemEventMultiWaitEx),
    433     SUPEXP_STK_BACK(22, RTSemEventMultiWaitExDebug),
    434     SUPEXP_STK_BACK(22, RTSemEventMultiWaitNoResume),
    435     SUPEXP_STK_BACK(22, RTSemEventSignal),
    436     SUPEXP_STK_BACK(22, RTSemEventWait),
    437     SUPEXP_STK_BACK(22, RTSemEventWaitEx),
    438     SUPEXP_STK_BACK(22, RTSemEventWaitExDebug),
    439     SUPEXP_STK_BACK(22, RTSemEventWaitNoResume),
    440     SUPEXP_STK_BACK(22, RTSemFastMutexCreate),
    441     SUPEXP_STK_BACK(22, RTSemFastMutexDestroy),
    442     SUPEXP_STK_BACK(22, RTSemFastMutexRelease),
    443     SUPEXP_STK_BACK(22, RTSemFastMutexRequest),
    444     SUPEXP_STK_BACK(22, RTSemMutexCreate),
    445     SUPEXP_STK_BACK(22, RTSemMutexDestroy),
    446     SUPEXP_STK_BACK(22, RTSemMutexRelease),
    447     SUPEXP_STK_BACK(22, RTSemMutexRequest),
    448     SUPEXP_STK_BACK(22, RTSemMutexRequestDebug),
    449     SUPEXP_STK_BACK(22, RTSemMutexRequestNoResume),
    450     SUPEXP_STK_BACK(22, RTSemMutexRequestNoResumeDebug),
    451     SUPEXP_STK_BACK(22, RTSpinlockAcquire),
    452     SUPEXP_STK_BACK(22, RTSpinlockCreate),
    453     SUPEXP_STK_BACK(22, RTSpinlockDestroy),
    454     SUPEXP_STK_BACK(22, RTSpinlockRelease),
    455     SUPEXP_STK_OKAY(0,  RTStrCopy),
    456     SUPEXP_STK_BACK(22, RTStrDupTag),
    457     SUPEXP_STK_BACK(22, RTStrFormatNumber),
    458     SUPEXP_STK_BACK(22, RTStrFormatTypeDeregister),
    459     SUPEXP_STK_BACK(22, RTStrFormatTypeRegister),
    460     SUPEXP_STK_BACK(22, RTStrFormatTypeSetUser),
    461     SUPEXP_STK_BACK(22, RTStrFormatV),
    462     SUPEXP_STK_BACK(22, RTStrFree),
    463     SUPEXP_STK_OKAY(0,  RTStrNCmp),
    464     SUPEXP_STK_BACK(22, RTStrPrintfExV),
    465     SUPEXP_STK_BACK(22, RTStrPrintfV),
    466     SUPEXP_STK_BACK(22, RTStrPrintf2ExV),
    467     SUPEXP_STK_BACK(22, RTStrPrintf2V),
    468     SUPEXP_STK_BACK(22, RTThreadCreate),
    469     SUPEXP_STK_BACK(22, RTThreadCtxHookIsEnabled),
    470     SUPEXP_STK_BACK(22, RTThreadCtxHookCreate),
    471     SUPEXP_STK_BACK(22, RTThreadCtxHookDestroy),
    472     SUPEXP_STK_BACK(22, RTThreadCtxHookDisable),
    473     SUPEXP_STK_BACK(22, RTThreadCtxHookEnable),
    474     SUPEXP_STK_BACK(22, RTThreadGetName),
    475     SUPEXP_STK_BACK(22, RTThreadGetNative),
    476     SUPEXP_STK_BACK(22, RTThreadGetType),
    477     SUPEXP_STK_BACK(22, RTThreadIsInInterrupt),
    478     SUPEXP_STK_BACK(22, RTThreadNativeSelf),
    479     SUPEXP_STK_BACK(22, RTThreadPreemptDisable),
    480     SUPEXP_STK_BACK(22, RTThreadPreemptIsEnabled),
    481     SUPEXP_STK_BACK(22, RTThreadPreemptIsPending),
    482     SUPEXP_STK_BACK(22, RTThreadPreemptIsPendingTrusty),
    483     SUPEXP_STK_BACK(22, RTThreadPreemptIsPossible),
    484     SUPEXP_STK_BACK(22, RTThreadPreemptRestore),
    485     SUPEXP_STK_BACK(22, RTThreadQueryTerminationStatus),
    486     SUPEXP_STK_BACK(22, RTThreadSelf),
    487     SUPEXP_STK_BACK(22, RTThreadSelfName),
    488     SUPEXP_STK_BACK(22, RTThreadSleep),
    489     SUPEXP_STK_BACK(22, RTThreadUserReset),
    490     SUPEXP_STK_BACK(22, RTThreadUserSignal),
    491     SUPEXP_STK_BACK(22, RTThreadUserWait),
    492     SUPEXP_STK_BACK(22, RTThreadUserWaitNoResume),
    493     SUPEXP_STK_BACK(22, RTThreadWait),
    494     SUPEXP_STK_BACK(22, RTThreadWaitNoResume),
    495     SUPEXP_STK_BACK(22, RTThreadYield),
    496     SUPEXP_STK_BACK(22, RTTimeNow),
    497     SUPEXP_STK_BACK(22, RTTimerCanDoHighResolution),
    498     SUPEXP_STK_BACK(22, RTTimerChangeInterval),
    499     SUPEXP_STK_BACK(22, RTTimerCreate),
    500     SUPEXP_STK_BACK(22, RTTimerCreateEx),
    501     SUPEXP_STK_BACK(22, RTTimerDestroy),
    502     SUPEXP_STK_BACK(22, RTTimerGetSystemGranularity),
    503     SUPEXP_STK_BACK(22, RTTimerReleaseSystemGranularity),
    504     SUPEXP_STK_BACK(22, RTTimerRequestSystemGranularity),
    505     SUPEXP_STK_BACK(22, RTTimerStart),
    506     SUPEXP_STK_BACK(22, RTTimerStop),
    507     SUPEXP_STK_BACK(22, RTTimeSystemMilliTS),
    508     SUPEXP_STK_BACK(22, RTTimeSystemNanoTS),
    509     SUPEXP_STK_OKAY(0,  RTUuidCompare),
    510     SUPEXP_STK_OKAY(0,  RTUuidCompareStr),
    511     SUPEXP_STK_OKAY(0,  RTUuidFromStr),
     436    SUPEXP_STK_BACK(    0, RTR0MemAreKrnlAndUsrDifferent),
     437    SUPEXP_STK_BACK(    1, RTR0MemKernelIsValidAddr),
     438    SUPEXP_STK_BACK(    3, RTR0MemKernelCopyFrom),
     439    SUPEXP_STK_BACK(    3, RTR0MemKernelCopyTo),
     440    SUPEXP_STK_OKAY(    1,  RTR0MemObjAddress),
     441    SUPEXP_STK_OKAY(    1,  RTR0MemObjAddressR3),
     442    SUPEXP_STK_BACK(    4, RTR0MemObjAllocContTag),
     443    SUPEXP_STK_BACK(    5, RTR0MemObjAllocLargeTag),
     444    SUPEXP_STK_BACK(    4, RTR0MemObjAllocLowTag),
     445    SUPEXP_STK_BACK(    4, RTR0MemObjAllocPageTag),
     446    SUPEXP_STK_BACK(    5, RTR0MemObjAllocPhysExTag),
     447    SUPEXP_STK_BACK(    4, RTR0MemObjAllocPhysNCTag),
     448    SUPEXP_STK_BACK(    4, RTR0MemObjAllocPhysTag),
     449    SUPEXP_STK_BACK(    5, RTR0MemObjEnterPhysTag),
     450    SUPEXP_STK_BACK(    2, RTR0MemObjFree),
     451    SUPEXP_STK_BACK(    2, RTR0MemObjGetPagePhysAddr),
     452    SUPEXP_STK_OKAY(    1,  RTR0MemObjIsMapping),
     453    SUPEXP_STK_BACK(    6, RTR0MemObjLockUserTag),
     454    SUPEXP_STK_BACK(    5, RTR0MemObjLockKernelTag),
     455    SUPEXP_STK_BACK(    8, RTR0MemObjMapKernelExTag),
     456    SUPEXP_STK_BACK(    6, RTR0MemObjMapKernelTag),
     457    SUPEXP_STK_BACK(    9,  RTR0MemObjMapUserExTag),
     458    SUPEXP_STK_BACK(    7,  RTR0MemObjMapUserTag),
     459    SUPEXP_STK_BACK(    4, RTR0MemObjProtect),
     460    SUPEXP_STK_OKAY(    1,  RTR0MemObjSize),
     461    SUPEXP_STK_BACK(    3, RTR0MemUserCopyFrom),
     462    SUPEXP_STK_BACK(    3, RTR0MemUserCopyTo),
     463    SUPEXP_STK_BACK(    1, RTR0MemUserIsValidAddr),
     464    SUPEXP_STK_BACK(    0, RTR0ProcHandleSelf),
     465    SUPEXP_STK_BACK(    1, RTSemEventCreate),
     466    SUPEXP_STK_BACK(    1, RTSemEventDestroy),
     467    SUPEXP_STK_BACK(    0, RTSemEventGetResolution),
     468    SUPEXP_STK_BACK(    0, RTSemEventIsSignalSafe),
     469    SUPEXP_STK_BACK(    1, RTSemEventMultiCreate),
     470    SUPEXP_STK_BACK(    1, RTSemEventMultiDestroy),
     471    SUPEXP_STK_BACK(    0, RTSemEventMultiGetResolution),
     472    SUPEXP_STK_BACK(    0, RTSemEventMultiIsSignalSafe),
     473    SUPEXP_STK_BACK(    1, RTSemEventMultiReset),
     474    SUPEXP_STK_BACK(    1, RTSemEventMultiSignal),
     475    SUPEXP_STK_BACK(    2, RTSemEventMultiWait),
     476    SUPEXP_STK_BACK(    3, RTSemEventMultiWaitEx),
     477    SUPEXP_STK_BACK(    7, RTSemEventMultiWaitExDebug),
     478    SUPEXP_STK_BACK(    2, RTSemEventMultiWaitNoResume),
     479    SUPEXP_STK_BACK(    1, RTSemEventSignal),
     480    SUPEXP_STK_BACK(    2, RTSemEventWait),
     481    SUPEXP_STK_BACK(    3, RTSemEventWaitEx),
     482    SUPEXP_STK_BACK(    7, RTSemEventWaitExDebug),
     483    SUPEXP_STK_BACK(    2, RTSemEventWaitNoResume),
     484    SUPEXP_STK_BACK(    1, RTSemFastMutexCreate),
     485    SUPEXP_STK_BACK(    1, RTSemFastMutexDestroy),
     486    SUPEXP_STK_BACK(    1, RTSemFastMutexRelease),
     487    SUPEXP_STK_BACK(    1, RTSemFastMutexRequest),
     488    SUPEXP_STK_BACK(    1, RTSemMutexCreate),
     489    SUPEXP_STK_BACK(    1, RTSemMutexDestroy),
     490    SUPEXP_STK_BACK(    1, RTSemMutexRelease),
     491    SUPEXP_STK_BACK(    2, RTSemMutexRequest),
     492    SUPEXP_STK_BACK(    6, RTSemMutexRequestDebug),
     493    SUPEXP_STK_BACK(    2, RTSemMutexRequestNoResume),
     494    SUPEXP_STK_BACK(    6, RTSemMutexRequestNoResumeDebug),
     495    SUPEXP_STK_BACK(    1, RTSpinlockAcquire),
     496    SUPEXP_STK_BACK(    3, RTSpinlockCreate),
     497    SUPEXP_STK_BACK(    1, RTSpinlockDestroy),
     498    SUPEXP_STK_BACK(    1, RTSpinlockRelease),
     499    SUPEXP_STK_OKAY(    3,  RTStrCopy),
     500    SUPEXP_STK_BACK(    2, RTStrDupTag),
     501    SUPEXP_STK_BACK(    6, RTStrFormatNumber),
     502    SUPEXP_STK_BACK(    1, RTStrFormatTypeDeregister),
     503    SUPEXP_STK_BACKF(   3, RTStrFormatTypeRegister),
     504    SUPEXP_STK_BACKF(   2, RTStrFormatTypeSetUser),
     505    SUPEXP_STK_BACKF(   6, RTStrFormatV),
     506    SUPEXP_STK_BACK(    1, RTStrFree),
     507    SUPEXP_STK_OKAY(    3,  RTStrNCmp),
     508    SUPEXP_STK_BACKF(   6, RTStrPrintfExV),
     509    SUPEXP_STK_BACK(    4, RTStrPrintfV),
     510    SUPEXP_STK_BACKF(   6, RTStrPrintf2ExV),
     511    SUPEXP_STK_BACK(    4, RTStrPrintf2V),
     512    SUPEXP_STK_BACKF(   7, RTThreadCreate),
     513    SUPEXP_STK_BACK(    1, RTThreadCtxHookIsEnabled),
     514    SUPEXP_STK_BACKF(   4, RTThreadCtxHookCreate),
     515    SUPEXP_STK_BACK(    1, RTThreadCtxHookDestroy),
     516    SUPEXP_STK_BACK(    1, RTThreadCtxHookDisable),
     517    SUPEXP_STK_BACK(    1, RTThreadCtxHookEnable),
     518    SUPEXP_STK_BACK(    1, RTThreadGetName),
     519    SUPEXP_STK_BACK(    1, RTThreadGetNative),
     520    SUPEXP_STK_BACK(    1, RTThreadGetType),
     521    SUPEXP_STK_BACK(    1, RTThreadIsInInterrupt),
     522    SUPEXP_STK_BACK(    0, RTThreadNativeSelf),
     523    SUPEXP_STK_BACK(    1, RTThreadPreemptDisable),
     524    SUPEXP_STK_BACK(    1, RTThreadPreemptIsEnabled),
     525    SUPEXP_STK_BACK(    1, RTThreadPreemptIsPending),
     526    SUPEXP_STK_BACK(    0, RTThreadPreemptIsPendingTrusty),
     527    SUPEXP_STK_BACK(    0, RTThreadPreemptIsPossible),
     528    SUPEXP_STK_BACK(    1, RTThreadPreemptRestore),
     529    SUPEXP_STK_BACK(    1, RTThreadQueryTerminationStatus),
     530    SUPEXP_STK_BACK(    0, RTThreadSelf),
     531    SUPEXP_STK_BACK(    0, RTThreadSelfName),
     532    SUPEXP_STK_BACK(    1, RTThreadSleep),
     533    SUPEXP_STK_BACK(    1, RTThreadUserReset),
     534    SUPEXP_STK_BACK(    1, RTThreadUserSignal),
     535    SUPEXP_STK_BACK(    2, RTThreadUserWait),
     536    SUPEXP_STK_BACK(    2, RTThreadUserWaitNoResume),
     537    SUPEXP_STK_BACK(    3, RTThreadWait),
     538    SUPEXP_STK_BACK(    3, RTThreadWaitNoResume),
     539    SUPEXP_STK_BACK(    0, RTThreadYield),
     540    SUPEXP_STK_BACK(    1, RTTimeNow),
     541    SUPEXP_STK_BACK(    0, RTTimerCanDoHighResolution),
     542    SUPEXP_STK_BACK(    2, RTTimerChangeInterval),
     543    SUPEXP_STK_BACKF(   4, RTTimerCreate),
     544    SUPEXP_STK_BACKF(   5, RTTimerCreateEx),
     545    SUPEXP_STK_BACK(    1, RTTimerDestroy),
     546    SUPEXP_STK_BACK(    0, RTTimerGetSystemGranularity),
     547    SUPEXP_STK_BACK(    1, RTTimerReleaseSystemGranularity),
     548    SUPEXP_STK_BACK(    2, RTTimerRequestSystemGranularity),
     549    SUPEXP_STK_BACK(    2, RTTimerStart),
     550    SUPEXP_STK_BACK(    1, RTTimerStop),
     551    SUPEXP_STK_BACK(    0, RTTimeSystemMilliTS),
     552    SUPEXP_STK_BACK(    0, RTTimeSystemNanoTS),
     553    SUPEXP_STK_OKAY(    2,  RTUuidCompare),
     554    SUPEXP_STK_OKAY(    2,  RTUuidCompareStr),
     555    SUPEXP_STK_OKAY(    2,  RTUuidFromStr),
    512556/* SED: END */
    513557};
  • trunk/src/VBox/HostDrivers/Support/SUPR0-asm-files.sed

    r91800 r91801  
    3636
    3737# We are only interested in the SUPEXP_STK_BACK lines.
    38 /^ *SUPEXP_STK_BACK(/!d
    39 s/^ *SUPEXP_STK_BACK( *[0-9][0-9]* *, *\([^)][^)]*\)),.*$*/    \$(SUPR0_0_OUTDIR)\/StkBack_\1.asm \\/
     38/^ *SUPEXP_STK_BACKF*(/!d
     39s/^ *SUPEXP_STK_BACKF*( *[0-9][0-9]* *, *\([^)][^)]*\)),.*$*/    \$(SUPR0_0_OUTDIR)\/StkBack_\1.asm \\/
    4040b end
    4141
  • trunk/src/VBox/HostDrivers/Support/SUPR0-asm.sed

    r91800 r91801  
    3636
    3737# We are only interested in the SUPEXP_STK_BACK lines.
    38 /^ *SUPEXP_STK_BACK(/!d
    39 s/^ *SUPEXP_STK_BACK( *\([0-9][0-9]*\) *, *\([^)][^)]*\)),.*$/\/\/ ##### BEGINFILE \"StkBack_\2.asm\"\n%include "VBox\/SUPR0StackWrapper.mac"\nSUPR0StackWrapperGeneric \2\n\/\/ ##### ENDFILE/
     38/^ *SUPEXP_STK_BACKF*(/!d
     39s/^ *SUPEXP_STK_BACKF*( *\([0-9][0-9]*\) *, *\([^)][^)]*\)),.*$/\/\/ ##### BEGINFILE \"StkBack_\2.asm\"\n%include "VBox\/SUPR0StackWrapper.mac"\nSUPR0StackWrapperGeneric \2\n\/\/ ##### ENDFILE/
    4040b end
    4141
  • trunk/src/VBox/HostDrivers/Support/SUPR0-def-lx.sed

    r91800 r91801  
    4848s/SUPEXP_CUSTOM( *[0-9][0-9]* *, *\([^),][^),]*\), [^)]*), */_\1 /
    4949s/SUPEXP_STK_OKAY( *[0-9][0-9]* *, *\([^)][^)]*\)), */_\1 /
    50 s/SUPEXP_STK_BACK( *[0-9][0-9]* *, *\([^)][^)]*\)), */_\1 /
     50s/SUPEXP_STK_BACKF*( *[0-9][0-9]* *, *\([^)][^)]*\)), */_\1 /
    5151
    5252# Handle trailing selection comment (/* solaris-only, os2-only */).
  • trunk/src/VBox/HostDrivers/Support/SUPR0-def-pe.sed

    r91800 r91801  
    4848s/SUPEXP_CUSTOM( *[0-9][0-9]* *, *\([^),][^),]*\), [^)]*), */\1 /
    4949s/SUPEXP_STK_OKAY( *[0-9][0-9]* *, *\([^)][^)]*\)), */\1 /
    50 s/SUPEXP_STK_BACK( *[0-9][0-9]* *, *\([^)][^)]*\)), */\1 /
     50s/SUPEXP_STK_BACKF*( *[0-9][0-9]* *, *\([^)][^)]*\)), */\1 /
    5151
    5252# Handle trailing selection comment (/* solaris-only, windows-only */).
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