File indexing completed on 2026-05-10 08:45:12
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #ifndef NVTX_IMPL_GUARD
0022 #error Never include this file directly -- it is automatically included by nvToolsExt.h (except when NVTX_NO_IMPL is defined).
0023 #endif
0024
0025 #if defined(NVTX_AS_SYSTEM_HEADER)
0026 #if defined(__clang__)
0027 #pragma clang system_header
0028 #elif defined(__GNUC__) || defined(__NVCOMPILER)
0029 #pragma GCC system_header
0030 #elif defined(_MSC_VER)
0031 #pragma system_header
0032 #endif
0033 #endif
0034
0035 #include <stdlib.h>
0036 #include <stdio.h>
0037 #include <string.h>
0038 #include <wchar.h>
0039
0040
0041
0042 #if defined(_WIN32)
0043
0044 #include <windows.h>
0045
0046 #else
0047 #include <unistd.h>
0048
0049 #if defined(__ANDROID__)
0050 #include <android/api-level.h>
0051 #endif
0052
0053 #if defined(__linux__) || defined(__CYGWIN__)
0054 #include <sched.h>
0055 #endif
0056
0057 #include <sys/types.h>
0058 #include <limits.h>
0059 #include <dlfcn.h>
0060 #include <fcntl.h>
0061 #include <errno.h>
0062 #include <pthread.h>
0063
0064 #endif
0065
0066
0067
0068 #define NVTX_INIT_STATE_FRESH 0
0069 #define NVTX_INIT_STATE_STARTED 1
0070 #define NVTX_INIT_STATE_COMPLETE 2
0071
0072 #ifdef NVTX_DEBUG_PRINT
0073 #ifdef __ANDROID__
0074 #include <android/log.h>
0075 #define NVTX_ERR(...) __android_log_print(ANDROID_LOG_ERROR, "NVTOOLSEXT", __VA_ARGS__);
0076 #define NVTX_INFO(...) __android_log_print(ANDROID_LOG_INFO, "NVTOOLSEXT", __VA_ARGS__);
0077 #else
0078 #include <stdio.h>
0079 #define NVTX_ERR(...) fprintf(stderr, "NVTX_ERROR: " __VA_ARGS__)
0080 #define NVTX_INFO(...) fprintf(stderr, "NVTX_INFO: " __VA_ARGS__)
0081 #endif
0082 #else
0083 #define NVTX_ERR(...)
0084 #define NVTX_INFO(...)
0085 #endif
0086
0087 #ifdef __cplusplus
0088 extern "C" {
0089 #endif
0090
0091 #ifdef __GNUC__
0092 #pragma GCC visibility push(hidden)
0093 #endif
0094
0095
0096
0097 NVTX_LINKONCE_FWDDECL_FUNCTION void NVTX_VERSIONED_IDENTIFIER(nvtxInitOnce)(void);
0098 NVTX_LINKONCE_FWDDECL_FUNCTION int NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxEtiGetModuleFunctionTable)(
0099 NvtxCallbackModule callback_module,
0100 NvtxFunctionTable* out_table,
0101 unsigned int* out_size);
0102 NVTX_LINKONCE_FWDDECL_FUNCTION void NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxEtiSetInjectionNvtxVersion)(
0103 uint32_t version);
0104 NVTX_LINKONCE_FWDDECL_FUNCTION const void* NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxGetExportTable)(
0105 uint32_t exportTableId);
0106
0107 #include "nvtxInitDecls.h"
0108
0109
0110
0111 typedef struct nvtxGlobals_t
0112 {
0113 volatile unsigned int initState;
0114 NvtxExportTableCallbacks etblCallbacks;
0115 NvtxExportTableVersionInfo etblVersionInfo;
0116
0117
0118 nvtxMarkEx_impl_fntype nvtxMarkEx_impl_fnptr;
0119 nvtxMarkA_impl_fntype nvtxMarkA_impl_fnptr;
0120 nvtxMarkW_impl_fntype nvtxMarkW_impl_fnptr;
0121 nvtxRangeStartEx_impl_fntype nvtxRangeStartEx_impl_fnptr;
0122 nvtxRangeStartA_impl_fntype nvtxRangeStartA_impl_fnptr;
0123 nvtxRangeStartW_impl_fntype nvtxRangeStartW_impl_fnptr;
0124 nvtxRangeEnd_impl_fntype nvtxRangeEnd_impl_fnptr;
0125 nvtxRangePushEx_impl_fntype nvtxRangePushEx_impl_fnptr;
0126 nvtxRangePushA_impl_fntype nvtxRangePushA_impl_fnptr;
0127 nvtxRangePushW_impl_fntype nvtxRangePushW_impl_fnptr;
0128 nvtxRangePop_impl_fntype nvtxRangePop_impl_fnptr;
0129 nvtxNameCategoryA_impl_fntype nvtxNameCategoryA_impl_fnptr;
0130 nvtxNameCategoryW_impl_fntype nvtxNameCategoryW_impl_fnptr;
0131 nvtxNameOsThreadA_impl_fntype nvtxNameOsThreadA_impl_fnptr;
0132 nvtxNameOsThreadW_impl_fntype nvtxNameOsThreadW_impl_fnptr;
0133
0134 nvtxNameCuDeviceA_fakeimpl_fntype nvtxNameCuDeviceA_impl_fnptr;
0135 nvtxNameCuDeviceW_fakeimpl_fntype nvtxNameCuDeviceW_impl_fnptr;
0136 nvtxNameCuContextA_fakeimpl_fntype nvtxNameCuContextA_impl_fnptr;
0137 nvtxNameCuContextW_fakeimpl_fntype nvtxNameCuContextW_impl_fnptr;
0138 nvtxNameCuStreamA_fakeimpl_fntype nvtxNameCuStreamA_impl_fnptr;
0139 nvtxNameCuStreamW_fakeimpl_fntype nvtxNameCuStreamW_impl_fnptr;
0140 nvtxNameCuEventA_fakeimpl_fntype nvtxNameCuEventA_impl_fnptr;
0141 nvtxNameCuEventW_fakeimpl_fntype nvtxNameCuEventW_impl_fnptr;
0142
0143 nvtxNameClDeviceA_fakeimpl_fntype nvtxNameClDeviceA_impl_fnptr;
0144 nvtxNameClDeviceW_fakeimpl_fntype nvtxNameClDeviceW_impl_fnptr;
0145 nvtxNameClContextA_fakeimpl_fntype nvtxNameClContextA_impl_fnptr;
0146 nvtxNameClContextW_fakeimpl_fntype nvtxNameClContextW_impl_fnptr;
0147 nvtxNameClCommandQueueA_fakeimpl_fntype nvtxNameClCommandQueueA_impl_fnptr;
0148 nvtxNameClCommandQueueW_fakeimpl_fntype nvtxNameClCommandQueueW_impl_fnptr;
0149 nvtxNameClMemObjectA_fakeimpl_fntype nvtxNameClMemObjectA_impl_fnptr;
0150 nvtxNameClMemObjectW_fakeimpl_fntype nvtxNameClMemObjectW_impl_fnptr;
0151 nvtxNameClSamplerA_fakeimpl_fntype nvtxNameClSamplerA_impl_fnptr;
0152 nvtxNameClSamplerW_fakeimpl_fntype nvtxNameClSamplerW_impl_fnptr;
0153 nvtxNameClProgramA_fakeimpl_fntype nvtxNameClProgramA_impl_fnptr;
0154 nvtxNameClProgramW_fakeimpl_fntype nvtxNameClProgramW_impl_fnptr;
0155 nvtxNameClEventA_fakeimpl_fntype nvtxNameClEventA_impl_fnptr;
0156 nvtxNameClEventW_fakeimpl_fntype nvtxNameClEventW_impl_fnptr;
0157
0158 nvtxNameCudaDeviceA_fakeimpl_fntype nvtxNameCudaDeviceA_impl_fnptr;
0159 nvtxNameCudaDeviceW_fakeimpl_fntype nvtxNameCudaDeviceW_impl_fnptr;
0160 nvtxNameCudaStreamA_fakeimpl_fntype nvtxNameCudaStreamA_impl_fnptr;
0161 nvtxNameCudaStreamW_fakeimpl_fntype nvtxNameCudaStreamW_impl_fnptr;
0162 nvtxNameCudaEventA_fakeimpl_fntype nvtxNameCudaEventA_impl_fnptr;
0163 nvtxNameCudaEventW_fakeimpl_fntype nvtxNameCudaEventW_impl_fnptr;
0164
0165 nvtxDomainMarkEx_impl_fntype nvtxDomainMarkEx_impl_fnptr;
0166 nvtxDomainRangeStartEx_impl_fntype nvtxDomainRangeStartEx_impl_fnptr;
0167 nvtxDomainRangeEnd_impl_fntype nvtxDomainRangeEnd_impl_fnptr;
0168 nvtxDomainRangePushEx_impl_fntype nvtxDomainRangePushEx_impl_fnptr;
0169 nvtxDomainRangePop_impl_fntype nvtxDomainRangePop_impl_fnptr;
0170 nvtxDomainResourceCreate_impl_fntype nvtxDomainResourceCreate_impl_fnptr;
0171 nvtxDomainResourceDestroy_impl_fntype nvtxDomainResourceDestroy_impl_fnptr;
0172 nvtxDomainNameCategoryA_impl_fntype nvtxDomainNameCategoryA_impl_fnptr;
0173 nvtxDomainNameCategoryW_impl_fntype nvtxDomainNameCategoryW_impl_fnptr;
0174 nvtxDomainRegisterStringA_impl_fntype nvtxDomainRegisterStringA_impl_fnptr;
0175 nvtxDomainRegisterStringW_impl_fntype nvtxDomainRegisterStringW_impl_fnptr;
0176 nvtxDomainCreateA_impl_fntype nvtxDomainCreateA_impl_fnptr;
0177 nvtxDomainCreateW_impl_fntype nvtxDomainCreateW_impl_fnptr;
0178 nvtxDomainDestroy_impl_fntype nvtxDomainDestroy_impl_fnptr;
0179 nvtxInitialize_impl_fntype nvtxInitialize_impl_fnptr;
0180
0181 nvtxDomainSyncUserCreate_fakeimpl_fntype nvtxDomainSyncUserCreate_impl_fnptr;
0182 nvtxDomainSyncUserDestroy_fakeimpl_fntype nvtxDomainSyncUserDestroy_impl_fnptr;
0183 nvtxDomainSyncUserAcquireStart_fakeimpl_fntype nvtxDomainSyncUserAcquireStart_impl_fnptr;
0184 nvtxDomainSyncUserAcquireFailed_fakeimpl_fntype nvtxDomainSyncUserAcquireFailed_impl_fnptr;
0185 nvtxDomainSyncUserAcquireSuccess_fakeimpl_fntype nvtxDomainSyncUserAcquireSuccess_impl_fnptr;
0186 nvtxDomainSyncUserReleasing_fakeimpl_fntype nvtxDomainSyncUserReleasing_impl_fnptr;
0187
0188
0189
0190 NvtxFunctionPointer* functionTable_CORE [NVTX_CBID_CORE_SIZE + 1];
0191 NvtxFunctionPointer* functionTable_CUDA [NVTX_CBID_CUDA_SIZE + 1];
0192 NvtxFunctionPointer* functionTable_OPENCL[NVTX_CBID_OPENCL_SIZE + 1];
0193 NvtxFunctionPointer* functionTable_CUDART[NVTX_CBID_CUDART_SIZE + 1];
0194 NvtxFunctionPointer* functionTable_CORE2 [NVTX_CBID_CORE2_SIZE + 1];
0195 NvtxFunctionPointer* functionTable_SYNC [NVTX_CBID_SYNC_SIZE + 1];
0196 } nvtxGlobals_t;
0197
0198 #define NVTX_GLOBAL_TABLE_ENTRY(name) ( NVTX_REINTERPRET_CAST(NvtxFunctionPointer*, &NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).name ## _impl_fnptr ) )
0199
0200 NVTX_LINKONCE_DEFINE_GLOBAL nvtxGlobals_t NVTX_VERSIONED_IDENTIFIER(nvtxGlobals) =
0201 {
0202 NVTX_INIT_STATE_FRESH,
0203
0204 {
0205 sizeof(NvtxExportTableCallbacks),
0206 NVTX_VERSIONED_IDENTIFIER(nvtxEtiGetModuleFunctionTable)
0207 },
0208 {
0209 sizeof(NvtxExportTableVersionInfo),
0210 NVTX_VERSION,
0211 0,
0212 NVTX_VERSIONED_IDENTIFIER(nvtxEtiSetInjectionNvtxVersion)
0213 },
0214
0215
0216 NVTX_VERSIONED_IDENTIFIER(nvtxMarkEx_impl_init),
0217 NVTX_VERSIONED_IDENTIFIER(nvtxMarkA_impl_init),
0218 NVTX_VERSIONED_IDENTIFIER(nvtxMarkW_impl_init),
0219 NVTX_VERSIONED_IDENTIFIER(nvtxRangeStartEx_impl_init),
0220 NVTX_VERSIONED_IDENTIFIER(nvtxRangeStartA_impl_init),
0221 NVTX_VERSIONED_IDENTIFIER(nvtxRangeStartW_impl_init),
0222 NVTX_VERSIONED_IDENTIFIER(nvtxRangeEnd_impl_init),
0223 NVTX_VERSIONED_IDENTIFIER(nvtxRangePushEx_impl_init),
0224 NVTX_VERSIONED_IDENTIFIER(nvtxRangePushA_impl_init),
0225 NVTX_VERSIONED_IDENTIFIER(nvtxRangePushW_impl_init),
0226 NVTX_VERSIONED_IDENTIFIER(nvtxRangePop_impl_init),
0227 NVTX_VERSIONED_IDENTIFIER(nvtxNameCategoryA_impl_init),
0228 NVTX_VERSIONED_IDENTIFIER(nvtxNameCategoryW_impl_init),
0229 NVTX_VERSIONED_IDENTIFIER(nvtxNameOsThreadA_impl_init),
0230 NVTX_VERSIONED_IDENTIFIER(nvtxNameOsThreadW_impl_init),
0231
0232 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuDeviceA_impl_init),
0233 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuDeviceW_impl_init),
0234 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuContextA_impl_init),
0235 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuContextW_impl_init),
0236 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuStreamA_impl_init),
0237 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuStreamW_impl_init),
0238 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuEventA_impl_init),
0239 NVTX_VERSIONED_IDENTIFIER(nvtxNameCuEventW_impl_init),
0240
0241 NVTX_VERSIONED_IDENTIFIER(nvtxNameClDeviceA_impl_init),
0242 NVTX_VERSIONED_IDENTIFIER(nvtxNameClDeviceW_impl_init),
0243 NVTX_VERSIONED_IDENTIFIER(nvtxNameClContextA_impl_init),
0244 NVTX_VERSIONED_IDENTIFIER(nvtxNameClContextW_impl_init),
0245 NVTX_VERSIONED_IDENTIFIER(nvtxNameClCommandQueueA_impl_init),
0246 NVTX_VERSIONED_IDENTIFIER(nvtxNameClCommandQueueW_impl_init),
0247 NVTX_VERSIONED_IDENTIFIER(nvtxNameClMemObjectA_impl_init),
0248 NVTX_VERSIONED_IDENTIFIER(nvtxNameClMemObjectW_impl_init),
0249 NVTX_VERSIONED_IDENTIFIER(nvtxNameClSamplerA_impl_init),
0250 NVTX_VERSIONED_IDENTIFIER(nvtxNameClSamplerW_impl_init),
0251 NVTX_VERSIONED_IDENTIFIER(nvtxNameClProgramA_impl_init),
0252 NVTX_VERSIONED_IDENTIFIER(nvtxNameClProgramW_impl_init),
0253 NVTX_VERSIONED_IDENTIFIER(nvtxNameClEventA_impl_init),
0254 NVTX_VERSIONED_IDENTIFIER(nvtxNameClEventW_impl_init),
0255
0256 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaDeviceA_impl_init),
0257 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaDeviceW_impl_init),
0258 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaStreamA_impl_init),
0259 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaStreamW_impl_init),
0260 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaEventA_impl_init),
0261 NVTX_VERSIONED_IDENTIFIER(nvtxNameCudaEventW_impl_init),
0262
0263 NVTX_VERSIONED_IDENTIFIER(nvtxDomainMarkEx_impl_init),
0264 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRangeStartEx_impl_init),
0265 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRangeEnd_impl_init),
0266 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRangePushEx_impl_init),
0267 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRangePop_impl_init),
0268 NVTX_VERSIONED_IDENTIFIER(nvtxDomainResourceCreate_impl_init),
0269 NVTX_VERSIONED_IDENTIFIER(nvtxDomainResourceDestroy_impl_init),
0270 NVTX_VERSIONED_IDENTIFIER(nvtxDomainNameCategoryA_impl_init),
0271 NVTX_VERSIONED_IDENTIFIER(nvtxDomainNameCategoryW_impl_init),
0272 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRegisterStringA_impl_init),
0273 NVTX_VERSIONED_IDENTIFIER(nvtxDomainRegisterStringW_impl_init),
0274 NVTX_VERSIONED_IDENTIFIER(nvtxDomainCreateA_impl_init),
0275 NVTX_VERSIONED_IDENTIFIER(nvtxDomainCreateW_impl_init),
0276 NVTX_VERSIONED_IDENTIFIER(nvtxDomainDestroy_impl_init),
0277 NVTX_VERSIONED_IDENTIFIER(nvtxInitialize_impl_init),
0278
0279 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserCreate_impl_init),
0280 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserDestroy_impl_init),
0281 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserAcquireStart_impl_init),
0282 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserAcquireFailed_impl_init),
0283 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserAcquireSuccess_impl_init),
0284 NVTX_VERSIONED_IDENTIFIER(nvtxDomainSyncUserReleasing_impl_init),
0285
0286
0287 {
0288 NVTX_NULLPTR,
0289 NVTX_GLOBAL_TABLE_ENTRY(nvtxMarkEx),
0290 NVTX_GLOBAL_TABLE_ENTRY(nvtxMarkA),
0291 NVTX_GLOBAL_TABLE_ENTRY(nvtxMarkW),
0292 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangeStartEx),
0293 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangeStartA),
0294 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangeStartW),
0295 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangeEnd),
0296 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangePushEx),
0297 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangePushA),
0298 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangePushW),
0299 NVTX_GLOBAL_TABLE_ENTRY(nvtxRangePop),
0300 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCategoryA),
0301 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCategoryW),
0302 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameOsThreadA),
0303 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameOsThreadW),
0304 NVTX_NULLPTR
0305 },
0306 {
0307 NVTX_NULLPTR,
0308 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuDeviceA),
0309 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuDeviceW),
0310 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuContextA),
0311 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuContextW),
0312 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuStreamA),
0313 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuStreamW),
0314 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuEventA),
0315 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCuEventW),
0316 NVTX_NULLPTR
0317 },
0318 {
0319 NVTX_NULLPTR,
0320 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClDeviceA),
0321 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClDeviceW),
0322 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClContextA),
0323 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClContextW),
0324 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClCommandQueueA),
0325 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClCommandQueueW),
0326 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClMemObjectA),
0327 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClMemObjectW),
0328 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClSamplerA),
0329 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClSamplerW),
0330 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClProgramA),
0331 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClProgramW),
0332 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClEventA),
0333 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameClEventW),
0334 NVTX_NULLPTR
0335 },
0336 {
0337 NVTX_NULLPTR,
0338 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaDeviceA),
0339 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaDeviceW),
0340 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaStreamA),
0341 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaStreamW),
0342 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaEventA),
0343 NVTX_GLOBAL_TABLE_ENTRY(nvtxNameCudaEventW),
0344 NVTX_NULLPTR
0345 },
0346 {
0347 NVTX_NULLPTR,
0348 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainMarkEx),
0349 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRangeStartEx),
0350 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRangeEnd),
0351 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRangePushEx),
0352 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRangePop),
0353 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainResourceCreate),
0354 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainResourceDestroy),
0355 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainNameCategoryA),
0356 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainNameCategoryW),
0357 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRegisterStringA),
0358 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainRegisterStringW),
0359 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainCreateA),
0360 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainCreateW),
0361 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainDestroy),
0362 NVTX_GLOBAL_TABLE_ENTRY(nvtxInitialize),
0363 NVTX_NULLPTR
0364 },
0365 {
0366 NVTX_NULLPTR,
0367 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserCreate),
0368 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserDestroy),
0369 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserAcquireStart),
0370 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserAcquireFailed),
0371 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserAcquireSuccess),
0372 NVTX_GLOBAL_TABLE_ENTRY(nvtxDomainSyncUserReleasing),
0373 NVTX_NULLPTR
0374 }
0375 };
0376
0377 #undef NVTX_GLOBAL_TABLE_ENTRY
0378
0379
0380
0381 #include "nvtxImplCore.h"
0382
0383
0384
0385 NVTX_LINKONCE_DEFINE_FUNCTION int NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxEtiGetModuleFunctionTable)(
0386 NvtxCallbackModule callback_module,
0387 NvtxFunctionTable* out_table,
0388 unsigned int* out_size)
0389 {
0390 unsigned int bytes = 0;
0391 NvtxFunctionTable table = NVTX_NULLPTR;
0392
0393 switch (callback_module)
0394 {
0395 case NVTX_CB_MODULE_CORE:
0396 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CORE;
0397 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CORE));
0398 break;
0399 case NVTX_CB_MODULE_CUDA:
0400 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CUDA;
0401 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CUDA));
0402 break;
0403 case NVTX_CB_MODULE_OPENCL:
0404 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_OPENCL;
0405 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_OPENCL));
0406 break;
0407 case NVTX_CB_MODULE_CUDART:
0408 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CUDART;
0409 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CUDART));
0410 break;
0411 case NVTX_CB_MODULE_CORE2:
0412 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CORE2;
0413 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_CORE2));
0414 break;
0415 case NVTX_CB_MODULE_SYNC:
0416 table = NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_SYNC;
0417 bytes = NVTX_STATIC_CAST(unsigned int, sizeof(NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).functionTable_SYNC));
0418 break;
0419 case NVTX_CB_MODULE_INVALID:
0420 case NVTX_CB_MODULE_SIZE:
0421 case NVTX_CB_MODULE_FORCE_INT:
0422 default: return 0;
0423 }
0424
0425 if (out_size)
0426 *out_size = (bytes / NVTX_STATIC_CAST(unsigned int, sizeof(NvtxFunctionPointer*))) - 1;
0427
0428 if (out_table)
0429 *out_table = table;
0430
0431 return 1;
0432 }
0433
0434 NVTX_LINKONCE_DEFINE_FUNCTION const void* NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxGetExportTable)(uint32_t exportTableId)
0435 {
0436 switch (exportTableId)
0437 {
0438 case NVTX_ETID_CALLBACKS: return &NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).etblCallbacks;
0439 case NVTX_ETID_VERSIONINFO: return &NVTX_VERSIONED_IDENTIFIER(nvtxGlobals).etblVersionInfo;
0440 default: return NVTX_NULLPTR;
0441 }
0442 }
0443
0444 NVTX_LINKONCE_DEFINE_FUNCTION void NVTX_API NVTX_VERSIONED_IDENTIFIER(nvtxEtiSetInjectionNvtxVersion)(uint32_t version)
0445 {
0446
0447 (void)version;
0448 }
0449
0450
0451
0452 #include "nvtxInitDefs.h"
0453
0454
0455
0456 #include "nvtxInit.h"
0457
0458 #ifdef __GNUC__
0459 #pragma GCC visibility pop
0460 #endif
0461
0462 #ifdef __cplusplus
0463 }
0464 #endif