1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::ffi::bindings::*;
use bitflags::bitflags;
#[cfg(feature = "serde")]
use serde_derive::{Deserialize, Serialize};

bitflags! {
    /**
    Event types that you can request to be notified about.

    Types can be combined with the Bitwise Or operator `|` when passed to
    `Device.register_events()`.
    */
    // Checked against local
    #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
    pub struct EventTypes: u64 {
        /// A corrected texture memory error is not an ECC error, so it does not
        /// generate a single bit event.
        const SINGLE_BIT_ECC_ERROR  = nvmlEventTypeSingleBitEccError as u64;
        /// An uncorrected texture memory error is not an ECC error, so it does not
        /// generate a double bit event.
        const DOUBLE_BIT_ECC_ERROR  = nvmlEventTypeDoubleBitEccError as u64;
        /**
        Power state change event.

        On the Fermi architecture, a PState change is an indicator that the GPU
        is throttling down due to no work being executed on the GPU, power
        capping, or thermal capping. In a typical situation, Fermi-based
        GPUs should stay in performance state zero for the duration of the
        execution of a compute process.
        */
        const PSTATE_CHANGE         = nvmlEventTypePState as u64;
        const CRITICAL_XID_ERROR    = nvmlEventTypeXidCriticalError as u64;
        /// Only supports the Kepler architecture.
        const CLOCK_CHANGE          = nvmlEventTypeClock as u64;
        /// Power source change event (battery vs. AC power).
        const POWER_SOURCE_CHANGE   = nvmlEventTypePowerSourceChange as u64;
        /// MIG configuration changes.
        const MIG_CONFIG_CHANGE     = nvmlEventMigConfigChange as u64;
    }
}