Sanitizer Callback API — compute-sanitizer 12.6 documentation

# Sanitizer Callback API

Functions, types, and enums that implement the Sanitizer Callback API.

Enumerations

Sanitizer_ApiCallbackSite

  Specifies the point in an API call that a callback is issued.

Sanitizer_BatchMemopType

  Specifies the type of batch memory operation.

Sanitizer_CallackIdSync

  Callback IDs for synchronization domain.

Sanitizer_CallbackDomain

  Callback domains.

Sanitizer_CallbackIdBatchMemop

  Callback IDs for batch memop domain.

Sanitizer_CallbackIdEvents

  Callback IDs for events domain.

Sanitizer_CallbackIdExternalMemory

  Callback IDs for external memory domain.

Sanitizer_CallbackIdGraphs

  Callback IDs for graphs domain.

Sanitizer_CallbackIdLaunch

  Callback IDs for launch domain.

Sanitizer_CallbackIdMemcpy

  Callback IDs for memcpy domain.

Sanitizer_CallbackIdMemset

  Callback IDs for memset domain.

Sanitizer_CallbackIdResource

  Callback IDs for resource domain.

Sanitizer_CallbackIdUvm

  Callback IDs for managed memory domain.

Sanitizer_MemcpyDirection

  Memcpy direction.

Sanitizer_MemoryVisibility

  Specifies the visibility of an allocation.

Sanitizer_ResourceMemoryFlags

  Flags describing a memory allocation.

Sanitizer_ResourceMemoryPermissions

  Permissions for a memory allocation.

Functions

SanitizerResult sanitizerEnableAllDomains(uint32_t enable, Sanitizer_SubscriberHandle subscriber)

  Enable or disable all callbacks in all domains.

SanitizerResult sanitizerEnableCallback(uint32_t enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain, Sanitizer_CallbackId cbid)

  Enable or disable callbacks for a specific domain and callback ID.

SanitizerResult sanitizerEnableDomain(uint32_t enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain)

  Enable or disable all callbacks for a specific domain.

SanitizerResult sanitizerGetCallbackState(uint32_t *enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain, Sanitizer_CallbackId cbid)

  Get the current enabled/disabled state of a callback for a specific domain and function ID.

SanitizerResult sanitizerSubscribe(Sanitizer_SubscriberHandle *subscriber, Sanitizer_CallbackFunc callback, void *userdata)

  Initialize a callback subscriber with a callback function and user data.

SanitizerResult sanitizerUnsubscribe(Sanitizer_SubscriberHandle subscriber)

  Unregister a callback subscriber.

Structs

Sanitizer_BatchMemopData

  Data passed into a batch memop callback function.

Sanitizer_CallbackData

  Data passed into a runtime or driver API callback function.

Sanitizer_EventData

  Data passed into an event callback function.

Sanitizer_ExternalMemoryData

  Data passed into an external memory callback function.

Sanitizer_GraphExecData

  Data passed into a graphexec creation callback function.

Sanitizer_GraphLaunchData

  Data passed into a graph launch callback function.

Sanitizer_GraphNodeLaunchData

  Data passed into a graph node launch callback function.

Sanitizer_LaunchData

  Data passed into a launch callback function.

Sanitizer_MemcpyData

  Data passed into a memcpy callback function.

Sanitizer_MemsetData

  Data passed into a memset callback function.

Sanitizer_ResourceArrayData

  Data passed into a CUDA array callback function.

Sanitizer_ResourceContextData

  Data passed into a context resource callback function.

Sanitizer_ResourceFunctionsLazyLoadedData

  Data passed into a CUDA function callback function.

Sanitizer_ResourceMemoryData

  Data passed into a memory resource callback function.

Sanitizer_ResourceMempoolData

  Data passed into a mempool resource callback function.

Sanitizer_ResourceModuleData

  Data passed into a module resource callback function.

Sanitizer_ResourceStreamData

  Data passed into a stream resource callback function.

Sanitizer_ResourceVirtualRange

  Data passed into a VA reservation callback function.

Sanitizer_SynchronizeData

  Data passed into a synchronization callback function.

Sanitizer_UvmData

  Data passed into a managed memory callback function.

Typedefs

Sanitizer_CallbackFunc

  Function type for a callback.

Sanitizer_CallbackId

  Callback ID.

Sanitizer_SubscriberHandle

  A callback subscriber.

## Enumerations

enum Sanitizer_ApiCallbackSite

  Specifies the point in an API call that a callback is issued.

  Specifies the point in an API that a callback is issued. This value is communicated to the callback function via Sanitizer_CallbackData::CallbackSize.

  Values:

  enumerator SANITIZER_API_ENTER

    This callback is at API entry.

  enumerator SANITIZER_API_EXIT

    This callback is at API exit.

  enumerator SANITIZER_API_CBSITE_FORCE_INT

enum Sanitizer_BatchMemopType

  Specifies the type of batch memory operation.

  Specifies the type of batch memory operation reported by a callback in domain SANITIZER_CB_DOMAIN_BATCH_MEMOP. This value is communicated to the callback function via Sanitizer_BatchMemopData::type.

  Values:

  enumerator SANITIZER_BATCH_MEMOP_TYPE_32B

    Batch memory operation size is 32 bits.

  enumerator SANITIZER_BATCH_MEMOP_TYPE_64B

    Batch memory operation size is 64 bits.

  enumerator SANITIZER_BATCH_MEMOP_TYPE_FORCE_INT

enum Sanitizer_CallackIdSync

  Callback IDs for synchronization domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_SYNCHRONIZE. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_SYNCHRONIZE_INVALID

    Invalid synchronize callback ID.

  enumerator SANITIZER_CBID_SYNCHRONIZE_STREAM_SYNCHRONIZED

    Stream synchronization has completed for a given stream.

  enumerator SANITIZER_CBID_SYNCHRONIZE_CONTEXT_SYNCHRONIZED

    Context synchronization has completed for a given context.

  enumerator SANITIZER_CBID_SYNCHRONIZE_SIZE
  enumerator SANITIZER_CBID_SYNCHRONIZE_FORCE_INT

enum Sanitizer_CallbackDomain

  Callback domains.

  Callback domain. Each domain represents callback points for a group of related API functions or CUDA driver activity.

  Values:

  enumerator SANITIZER_CB_DOMAIN_INVALID

    Invalid domain.

  enumerator SANITIZER_CB_DOMAIN_DRIVER_API

    Domain containing callback points for all driver API functions.

  enumerator SANITIZER_CB_DOMAIN_RUNTIME_API

    Domain containing callback points for all runtime API functions.

  enumerator SANITIZER_CB_DOMAIN_RESOURCE

    Domain containing callback points for CUDA resource tracking.

  enumerator SANITIZER_CB_DOMAIN_SYNCHRONIZE

    Domain containing callback points for CUDA synchronization.

  enumerator SANITIZER_CB_DOMAIN_LAUNCH

    Domain containing callback points for CUDA grid launches.

  enumerator SANITIZER_CB_DOMAIN_MEMCPY

    Domain containing callback points for CUDA memcpy operations.

  enumerator SANITIZER_CB_DOMAIN_MEMSET

    Domain containing callback points for CUDA memset operations.

  enumerator SANITIZER_CB_DOMAIN_BATCH_MEMOP

    Domain containing callback points for CUDA batch memop operations.

  enumerator SANITIZER_CB_DOMAIN_UVM

    Domain containing callback points for CUDA managed memory operations.

  enumerator SANITIZER_CB_DOMAIN_GRAPHS

    Domain containing callback points for CUDA graphs operations.

  enumerator SANITIZER_CB_DOMAIN_EVENTS

    Domain containing callback points for CUDA events.

  enumerator SANITIZER_CB_DOMAIN_EXTERNAL_MEMORY

    Domain containing callback points for CUDA external memory.

  enumerator SANITIZER_CB_DOMAIN_SIZE
  enumerator SANITIZER_CB_DOMAIN_FORCE_INT

enum Sanitizer_CallbackIdBatchMemop

  Callback IDs for batch memop domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_BATCH_MEMOP. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_BATCH_MEMOP_INVALID

    Invalid batch memop callback ID.

  enumerator SANITIZER_CBID_BATCH_MEMOP_WRITE

    A batch memory operation was initiated.

  enumerator SANITIZER_CBID_BATCH_MEMOP_SIZE
  enumerator SANITIZER_CBID_BATCH_MEMOP_FORCE_INT

enum Sanitizer_CallbackIdEvents

  Callback IDs for events domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_EVENTS. This value is communicated to the callback function via the `cbid` parameter. Available with a driver version of 515 or newer.

  Values:

  enumerator SANITIZER_CBID_EVENTS_INVALID

    Invalid event callback ID.

  enumerator SANITIZER_CBID_EVENTS_CREATED

    An event was created.

  enumerator SANITIZER_CBID_EVENTS_DESTROYED

    An event was destroyed.

  enumerator SANITIZER_CBID_EVENTS_RECORD

    An event was recorded.

  enumerator SANITIZER_CBID_EVENTS_STREAM_WAIT

    A stream was synchronized to an event.

  enumerator SANITIZER_CBID_EVENTS_SYNCHRONIZE

    An event was synchronized.

  enumerator SANITIZER_CBID_EVENTS_SIZE
  enumerator SANITIZER_CBID_EVENTS_FORCE_INT

enum Sanitizer_CallbackIdExternalMemory

  Callback IDs for external memory domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_EXTERNA_MEMORY. This value is communicated to the callback function via the `cbid` parameter. Available with a driver version of 535 or newer.

  Values:

  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_INVALID

    Invalid external memory callback ID.

  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_IMPORT

    External memory was imported.

  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_MAPPED

    External memory was mapped.

  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_DESTROYED

    External memory was destroyed.

  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_SIZE
  enumerator SANITIZER_CBID_EXTERNAL_MEMORY_FORCE_INT

enum Sanitizer_CallbackIdGraphs

  Callback IDs for graphs domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_GRAPHS. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_GRAPHS_INVALID

    Invalid graphs callback ID.

  enumerator SANITIZER_CBID_GRAPHS_GRAPHEXEC_CREATING

    A new graphexec is being created.

  enumerator SANITIZER_CBID_GRAPHS_GRAPHEXEC_CREATED

    A new graphexec is created.

  enumerator SANITIZER_CBID_GRAPHS_GRAPHEXEC_DESTROYING

    A graphexec is being destroyed.

  enumerator SANITIZER_CBID_GRAPHS_NODE_LAUNCH_BEGIN

    A node launch was initiated.

  enumerator SANITIZER_CBID_GRAPHS_NODE_LAUNCH_END

    A node launch is complete.

  enumerator SANITIZER_CBID_GRAPHS_LAUNCH_BEGIN

    A graph launch was initiated.

  enumerator SANITIZER_CBID_GRAPHS_LAUNCH_END

    A graph launch is complete.

  enumerator SANITIZER_CBID_GRAPHS_SIZE
  enumerator SANITIZER_CBID_GRAPHS_FORCE_INT

enum Sanitizer_CallbackIdLaunch

  Callback IDs for launch domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_LAUNCH. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_LAUNCH_INVALID

    Invalid launch callback ID.

  enumerator SANITIZER_CBID_LAUNCH_BEGIN

    A grid launch was initiated.

  enumerator SANITIZER_CBID_LAUNCH_AFTER_SYSCALL_SETUP

    A grid launch has completed syscalls setup.

  enumerator SANITIZER_CBID_LAUNCH_END

    The grid launch is complete.

  enumerator SANITIZER_CBID_LAUNCH_SIZE
  enumerator SANITIZER_CBID_LAUNCH_FORCE_INT

enum Sanitizer_CallbackIdMemcpy

  Callback IDs for memcpy domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_MEMCPY. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_MEMCPY_INVALID

    Invalid memcpy callback ID.

  enumerator SANITIZER_CBID_MEMCPY_STARTING

    A memcpy operation was initiated.

  enumerator SANITIZER_CBID_MEMCPY_SIZE
  enumerator SANITIZER_CBID_MEMCPY_FORCE_INT

enum Sanitizer_CallbackIdMemset

  Callback IDs for memset domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_MEMSET. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_MEMSET_INVALID

    Invalid memset callback ID.

  enumerator SANITIZER_CBID_MEMSET_STARTING

    A memset operation was initiated.

  enumerator SANITIZER_CBID_MEMSET_SIZE
  enumerator SANITIZER_CBID_MEMSET_FORCE_INT

enum Sanitizer_CallbackIdResource

  Callback IDs for resource domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_RESOURCE. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_RESOURCE_INVALID

    Invalid resource callback ID.

  enumerator SANITIZER_CBID_RESOURCE_INIT_FINISHED

    Driver initialization is finished.

  enumerator SANITIZER_CBID_RESOURCE_CONTEXT_CREATION_STARTING

    A new context is about to be created.

  enumerator SANITIZER_CBID_RESOURCE_CONTEXT_CREATION_FINISHED

    A new context was created.

  enumerator SANITIZER_CBID_RESOURCE_CONTEXT_DESTROY_STARTING

    A context is about to be destroyed.

  enumerator SANITIZER_CBID_RESOURCE_CONTEXT_DESTROY_FINISHED

    A context was destroyed.

  enumerator SANITIZER_CBID_RESOURCE_STREAM_CREATED

    A new stream was created.

  enumerator SANITIZER_CBID_RESOURCE_STREAM_DESTROY_STARTING

    A stream is about to be destroyed.

  enumerator SANITIZER_CBID_RESOURCE_STREAM_DESTROY_FINISHED

    A stream was destroyed.

  enumerator SANITIZER_CBID_RESOURCE_MODULE_LOADED

    A module was loaded.

  enumerator SANITIZER_CBID_RESOURCE_MODULE_UNLOAD_STARTING

    A module is about to be unloaded.

  enumerator SANITIZER_CBID_RESOURCE_DEVICE_MEMORY_ALLOC

    Device memory was allocated.

  enumerator SANITIZER_CBID_RESOURCE_DEVICE_MEMORY_FREE

    Device memory was freed.

  enumerator SANITIZER_CBID_RESOURCE_HOST_MEMORY_ALLOC

    Pinned host memory was allocated.

  enumerator SANITIZER_CBID_RESOURCE_HOST_MEMORY_FREE

    Pinned host memory was freed.

  enumerator SANITIZER_CBID_RESOURCE_MEMORY_ALLOC_ASYNC

    Memory was allocated asynchronously.

  enumerator SANITIZER_CBID_RESOURCE_MEMORY_FREE_ASYNC

    Memory was freed asynchronously.

  enumerator SANITIZER_CBID_RESOURCE_MEMORY_FREE_ASYNC_DONE

    Memory freed asynchronously was released, only happens if a regular allocation (cudaMalloc) is free’d asynchronously (cudaFreeAsync).

    See CUDA runtime documentation for cudaFreeAsync

  enumerator SANITIZER_CBID_RESOURCE_MEMPOOL_CREATED

    A new mempool was created.

  enumerator SANITIZER_CBID_RESOURCE_MEMPOOL_DESTROYING

    A mempool is about to be destroyed.

  enumerator SANITIZER_CBID_RESOURCE_MEMPOOL_PEER_ACCESS_ENABLED

    A mempool is now accessible from a peer device.

  enumerator SANITIZER_CBID_RESOURCE_MEMPOOL_PEER_ACCESS_DISABLING

    A mempool is no longer accessible from a peer device.

  enumerator SANITIZER_CBID_RESOURCE_ARRAY_CREATED

    A CUDA array was created.

  enumerator SANITIZER_CBID_RESOURCE_ARRAY_DESTROYED

    A CUDA array was destroyed.

  enumerator SANITIZER_CBID_RESOURCE_FUNCTIONS_LAZY_LOADED

    CUDA functions were loaded lazily and are fully loaded.

  enumerator SANITIZER_CBID_RESOURCE_FUNCTIONS_LAZY_PATCHED

    CUDA lazily loaded functions were patched.

  enumerator SANITIZER_CBID_RESOURCE_VIRTUAL_RESERVE

    The CUDA driver reserved a virtual address range.

  enumerator SANITIZER_CBID_RESOURCE_VIRTUAL_RELEASE

    The CUDA driver released a virtual address range.

  enumerator SANITIZER_CBID_RESOURCE_MEMPOOL_IMPORT_POINTER

    A memory pool allocation was imported.

  enumerator SANITIZER_CBID_RESOURCE_SIZE
  enumerator SANITIZER_CBID_RESOURCE_FORCE_INT

enum Sanitizer_CallbackIdUvm

  Callback IDs for managed memory domain.

  Callback IDs for resource domain SANITIZER_CB_DOMAIN_UVM. This value is communicated to the callback function via the `cbid` parameter.

  Values:

  enumerator SANITIZER_CBID_UVM_INVALID

    Invalid managed memory callback ID.

  enumerator SANITIZER_CBID_UVM_ATTACH_MEM

    Modify the stream association of an allocation (see cudaStreamAttachMemAsync)

  enumerator SANITIZER_CBID_UVM_SIZE
  enumerator SANITIZER_CBID_UVM_FORCE_ITN

enum Sanitizer_MemcpyDirection

  Memcpy direction.

  Indicates the direction of a memcpy, passed inside `Sanitizer_Memcpydata`.

  Values:

  enumerator SANITIZER_MEMCPY_DIRECTION_UNKNOWN

    Unknown memcpy direction.

  enumerator SANITIZER_MEMCPY_DIRECTION_HOST_TO_HOST

    Memcpy from host to host.

  enumerator SANITIZER_MEMCPY_DIRECTION_HOST_TO_DEVICE

    Memcpy from host to device.

  enumerator SANITIZER_MEMCPY_DIRECTION_DEVICE_TO_HOST

    Memcpy from device to host.

  enumerator SANITIZER_MEMCPY_DIRECTION_DEVICE_TO_DEVICE

    Memcpy from device to device.

  enumerator SANITIZER_MEMCPY_DIRECTION_SIZE
  enumerator SANITIZER_MEMCPY_DIRECTION_FORCE_INT

enum Sanitizer_MemoryVisibility

  Specifies the visibility of an allocation.

  Specifies the visibility of an allocation. This is typically GLOBAL on allocations made via cudaMalloc, cudaHostAlloc and similar APIs. This can be GLOBAL or HOST for cudaMallocManaged allocations depending on the flags parameter. This can be changed after allocation time using cudaMemAttachSingle API (see SANITIZER_CBID_UVM_ATTACH_MEM for the corresponding callback).

  Values:

  enumerator SANITIZER_MEMORY_VISIBILITY_INVALID

    Invalid memory visibility.

  enumerator SANITIZER_MEMORY_VISIBILITY_GLOBAL

    Memory can be accessed by any stream on any device (see cudaMemAttachGlobal)

  enumerator SANITIZER_MEMORY_VISIBILITY_HOST

    Memory cannot be accessed by any stream on any device (see cudaMemAttachHost)

  enumerator SANITIZER_MEMORY_VISIBILITY_STREAM

    Memory can only be accessed by a single stream on the associated device (see cudaMemAttachSingle)

  enumerator SANITIZER_MEMORY_VISIBILITY_FORCE_INT

enum Sanitizer_ResourceMemoryFlags

  Flags describing a memory allocation.

  Flags describing a memory allocation. These values are to be used in order to interpret the value of Sanitizer_ResourceMemoryData::flags

  Values:

  enumerator SANITIZER_MEMORY_FLAG_NONE

    Empty flag.

  enumerator SANITIZER_MEMORY_FLAG_MODULE

    Specifies that the allocation is static scoped to a module.

  enumerator SANITIZER_MEMORY_FLAG_MANAGED

    Specifies that the allocation is managed memory.

  enumerator SANITIZER_MEMORY_FLAG_HOST_MAPPED

    Species that the allocation accessible from the host.

  enumerator SANITIZER_MEMORY_FLAG_HOST_PINNED

    Specifies that the allocation is pinned on the host.

  enumerator SANITIZER_MEMORY_FLAG_PEER

    Specifies that the allocation is located on a peer GPU.

  enumerator SANITIZER_MEMORY_FLAG_PEER_ATOMIC

    Specifies that the allocation is located on a peer GPU supporting native atomics.

    This implies that SANITIZER_MEMORY_FLAG_PEER is set as well.

  enumerator SANITIZER_MEMORY_FLAG_CG_RUNTIME

    Specifies that the allocation is used by the Cooperative Groups runtime functions.

  enumerator SANITIZER_MEMORY_FLAG_CNP

    Specifies that this is an allocation used for CUDA Dynamic Parallelism purposes.

  enumerator SANITIZER_MEMORY_FLAG_FORCE_INT

enum Sanitizer_ResourceMemoryPermissions

  Permissions for a memory allocation.

  Permissions for a memory allocation. These values are to be used in order to interpret the value of Sanitizer_ResourceMemoryData::permissions

  Values:

  enumerator SANITIZER_MEMORY_PERMISSION_NONE

    No permissions.

  enumerator SANITIZER_MEMORY_PERMISSION_READ

    Specifies that the allocation is readable.

  enumerator SANITIZER_MEMORY_PERMISSION_WRITE

    Specifies that the allocation is writable.

  enumerator SANITIZER_MEMORY_PERMISSION_ATOMIC

    Specifies that the allocation is readable/writable with atomic operations.

  enumerator SANITIZER_MEMORY_PERMISSION_ALL

    Specifies that the allocation has all permissions.

  enumerator SANITIZER_MEMORY_PERMISSION_FORCE_INT

## Functions

SanitizerResult sanitizerEnableAllDomains(uint32_t enable, Sanitizer_SubscriberHandle subscriber)

  Enable or disable all callbacks in all domains.

  Enable or disable all callbacks in all domains.

  Note

  Thread-safety

  : a subscriber must serialize access to sanitizerGetCallbackState, sanitizerEnableCallback, sanitizerEnableDomain, and sanitizerEnableAllDomains. For example, if sanitizerGetCallbackState(sub,

  d, *) and sanitizerEnableAllDomains(sub) are called concurrently, the results are undefined.

  Parameters

    - enable – New enable state for all callbacks in all domains. Zero disables all callbacks, non-zero enables all callbacks.

    - subscriber – - Handle of the initialized subscriber

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_INVALID_PARAMETER – if `subscriber` is invalid

SanitizerResult sanitizerEnableCallback(uint32_t enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain, Sanitizer_CallbackId cbid)

  Enable or disable callbacks for a specific domain and callback ID.

  Enable or disable callbacks for a subscriber for a specific domain and callback ID.

  Note

  Thread-safety

  : a subscriber must serialize access to sanitizerGetCallbackState, sanitizerEnableCallback, sanitizerEnableDomain, and sanitizerEnableAllDomains. For example, if sanitizerGetCallbackState(sub, d,

  c) and sanitizerEnableCallback(sub, d, c) are called concurrently, the results are undefined.

  Parameters

    - enable – New enable state for the callback. Zero disables the callback, non-zero enables the callback

    - subscriber – - Handle of the initialized subscriber

    - domain – The domain of the callback

    - cbid – The ID of the callback

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_INVALID_PARAMETER – if `subscriber`, `domain` or `cbid` is invalid

SanitizerResult sanitizerEnableDomain(uint32_t enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain)

  Enable or disable all callbacks for a specific domain.

  Enable or disable all callbacks for a specific domain.

  Note

  Thread-safety

  : a subscriber must serialize access to sanitizerGetCallbackState, sanitizerEnableCallback, sanitizerEnableDomain, and sanitizerEnableAllDomains. For example, if sanitizerGetCallbackEnabled(sub,

  d, *) and sanitizerEnableDomain(sub, d) are called concurrently, the results are undefined.

  Parameters

    - enable – New enable state for all callbacks in the domain. Zero disables all callbacks, non-zero enables all callbacks

    - subscriber – - Handle of the initialized subscriber

    - domain – The domain of the callback

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_INVALID_PARAMETER – if `subscriber` or `domain` is invalid

SanitizerResult sanitizerGetCallbackState(uint32_t *enable, Sanitizer_SubscriberHandle subscriber, Sanitizer_CallbackDomain domain, Sanitizer_CallbackId cbid)

  Get the current enabled/disabled state of a callback for a specific domain and function ID.

  Returns non-zero in `*enable` if the callback for a domain and callback ID is enabled, and zero if not enabled.

  Note

  Thread-safety

  : a subscriber must serialize access to sanitizerGetCallbackState, sanitizerEnableCallback, sanitizerEnableDomain, and sanitizerEnableAllDomains. For example, if sanitizerGetCallbackState(sub, d,

  c) and sanitizerEnableCallback(sub, d, c) are called concurrently, the results are undefined.

  Parameters

    - enable – Returns non-zero if callback enabled, zero if not enabled

    - subscriber – Handle to the initialized subscriber

    - domain – The domain of the callback

    - cbid – The ID of the callback

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_INVALID_PARAMETER – if `enabled` is NULL, or if `subscriber`, `domain` or `cbid` is invalid.

SanitizerResult sanitizerSubscribe(Sanitizer_SubscriberHandle *subscriber, Sanitizer_CallbackFunc callback, void *userdata)

  Initialize a callback subscriber with a callback function and user data.

  Initialize a callback subscriber with a callback function and (optionally) a pointer to user data. The returned subscriber handle can be used to enable and disable the callback for specific domains and callback IDs.

  Note

  Only one subscriber can be registered at a time.

  Note

  This function does not enable any callbacks.

  Note

  Thread-safety: this function is thread safe.

  Parameters

    - subscriber – Returns handle to initialize subscriber

    - callback – The callback function

    - userdata – A pointer to user data. This data will be passed to the callback function via the `userdata` parameter

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_MAX_LIMIT_RACHED – if there is already a sanitizer subscriber

    - SANITIZER_ERROR_INVALID_PARAMETER – if `subscriber` is NULL

SanitizerResult sanitizerUnsubscribe(Sanitizer_SubscriberHandle subscriber)

  Unregister a callback subscriber.

  Removes a callback subscriber so that no future callback will be issued to that subscriber.

  Note

  Thread-safety: this function is thread safe.

  Parameters

    subscriber – Handle to the initialized subscriber

  Return values

    - SANITIZER_SUCCESS – on success

    - SANITIZER_ERROR_NOT_INITIALIZED – if unable to initialize the sanitizer

    - SANITIZER_ERROR_INVALID_PARAMETER – if `subscriber` is NULL or not initialized

## Typedefs

typedef void (*Sanitizer_CallbackFunc)(void *userdata, Sanitizer_CallbackDomain domain, Sanitizer_CallbackId cbid, const void *cbdata)

  Function type for a callback.

  Function type for a callback. The type of the data passed to the callback in `cbdata` depends on the domain. If `domain` is SANITIZER_CB_DOMAIN_DRIVER_API or SANITIZER_CB_DOMAIN_RUNTIME_API the type of `cbdata` will be Sanitizer_CallbackData. If `domain` is SANITIZER_CB_DOMAIN_RESOURCE the type of `cbdata` will be dependent on cbid. Refer to Sanitizer_ResourceContextData, Sanitizer_ResourceStreamData, Sanitizer_ResourceModuleData and Sanitizer_ResourceMemoryFlags documentations. If `domain` is SANITIZER_CB_DOMAIN_SYNCHRONIZE the type of `cbdata` will be Sanitizer_SynchronizeData. If `domain` is SANITIZER_CB_DOMAIN_LAUNCH the type of `cbdata` will be Sanitizer_LaunchData. If `domain` is SANITIZER_CB_DOMAIN_MEMCPY the type of `cbdata` will be Sanitizer_MemcpyData. If `domain` is SANITIZER_CB_DOMAIN_MEMSET the type of `cbdata` will be Sanitizer_MemsetData. If `domain` is SANITIZER_CB_DOMAIN_BATCH_MEMOP the type of `cbdata` will be Sanitizer_BatchMemopData.

typedef uint32_t Sanitizer_CallbackId

  Callback ID.

typedef struct Sanitizer_Subscriber_st *Sanitizer_SubscriberHandle

  A callback subscriber.