def nvmlDeviceRegisterEvents(handle, eventTypes, eventSet):
    r"""
    /**
     * Starts recording of events on a specified devices and add the events to specified \ref nvmlEventSet_t
     *
     * For Fermi &tm; or newer fully supported devices.
     * Ecc events are available only on ECC enabled devices (see \ref nvmlDeviceGetTotalEccErrors)
     * Power capping events are available only on Power Management enabled devices (see \ref nvmlDeviceGetPowerManagementMode)
     *
     * For Linux only.
     *
     * \b IMPORTANT: Operations on \a set are not thread safe
     *
     * This call starts recording of events on specific device.
     * All events that occurred before this call are not recorded.
     * Checking if some event occurred can be done with \ref nvmlEventSetWait
     *
     * If function reports NVML_ERROR_UNKNOWN, event set is in undefined state and should be freed.
     * If function reports NVML_ERROR_NOT_SUPPORTED, event set can still be used. None of the requested eventTypes
     *     are registered in that case.
     *
     * @param device                               The identifier of the target device
     * @param eventTypes                           Bitmask of \ref nvmlEventType to record
     * @param set                                  Set to which add new event types
     *
     * @return
     *         - \ref NVML_SUCCESS                 if the event has been set
     *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
     *         - \ref NVML_ERROR_INVALID_ARGUMENT  if \a eventTypes is invalid or \a set is NULL
     *         - \ref NVML_ERROR_NOT_SUPPORTED     if the platform does not support this feature or some of requested event types
     *         - \ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible
     *         - \ref NVML_ERROR_UNKNOWN           on any unexpected error
     *
     * @see nvmlEventType
     * @see nvmlDeviceGetSupportedEventTypes
     * @see nvmlEventSetWait
     * @see nvmlEventSetFree
     */
    nvmlReturn_t DECLDIR nvmlDeviceRegisterEvents
    """
    fn = _nvmlGetFunctionPointer("nvmlDeviceRegisterEvents")
    ret = fn(handle, c_ulonglong(eventTypes), eventSet)
    _nvmlCheckReturn(ret)
    return None
r"""
    /**
     * Starts recording of events on a specified devices and add the events to specified \ref nvmlEventSet_t
     *
     * For Fermi &tm; or newer fully supported devices.
     * Ecc events are available only on ECC enabled devices (see \ref nvmlDeviceGetTotalEccErrors)
     * Power capping events are available only on Power Management enabled devices (see \ref nvmlDeviceGetPowerManagementMode)
     *
     * For Linux only.
     *
     * \b IMPORTANT: Operations on \a set are not thread safe
     *
     * This call starts recording of events on specific device.
     * All events that occurred before this call are not recorded.
     * Checking if some event occurred can be done with \ref nvmlEventSetWait
     *
     * If function reports NVML_ERROR_UNKNOWN, event set is in undefined state and should be freed.
     * If function reports NVML_ERROR_NOT_SUPPORTED, event set can still be used. None of the requested eventTypes
     *     are registered in that case.
     *
     * @param device                               The identifier of the target device
     * @param eventTypes                           Bitmask of \ref nvmlEventType to record
     * @param set                                  Set to which add new event types
     *
     * @return
     *         - \ref NVML_SUCCESS                 if the event has been set
     *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
     *         - \ref NVML_ERROR_INVALID_ARGUMENT  if \a eventTypes is invalid or \a set is NULL
     *         - \ref NVML_ERROR_NOT_SUPPORTED     if the platform does not support this feature or some of requested event types
     *         - \ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible
     *         - \ref NVML_ERROR_UNKNOWN           on any unexpected error
     *
     * @see nvmlEventType
     * @see nvmlDeviceGetSupportedEventTypes
     * @see nvmlEventSetWait
     * @see nvmlEventSetFree
     */
    nvmlReturn_t DECLDIR nvmlDeviceRegisterEvents