@@ -199,6 +199,50 @@ pub fn nvml_try(code: nvmlReturn_t) -> Result<(), NvmlError> {
199199 }
200200}
201201
202+ #[ allow( deprecated) ]
203+ impl From < NvmlError > for nvmlReturn_t {
204+ fn from ( error : NvmlError ) -> Self {
205+ use NvmlError :: * ;
206+
207+ match error {
208+ Uninitialized => nvmlReturn_enum_NVML_ERROR_UNINITIALIZED,
209+ InvalidArg => nvmlReturn_enum_NVML_ERROR_INVALID_ARGUMENT,
210+ NotSupported => nvmlReturn_enum_NVML_ERROR_NOT_SUPPORTED,
211+ NoPermission => nvmlReturn_enum_NVML_ERROR_NO_PERMISSION,
212+ AlreadyInitialized => nvmlReturn_enum_NVML_ERROR_ALREADY_INITIALIZED,
213+ NotFound => nvmlReturn_enum_NVML_ERROR_NOT_FOUND,
214+ InsufficientSize ( _) => nvmlReturn_enum_NVML_ERROR_INSUFFICIENT_SIZE,
215+ InsufficientPower => nvmlReturn_enum_NVML_ERROR_INSUFFICIENT_POWER,
216+ DriverNotLoaded => nvmlReturn_enum_NVML_ERROR_DRIVER_NOT_LOADED,
217+ Timeout => nvmlReturn_enum_NVML_ERROR_TIMEOUT,
218+ IrqIssue => nvmlReturn_enum_NVML_ERROR_IRQ_ISSUE,
219+ LibraryNotFound => nvmlReturn_enum_NVML_ERROR_LIBRARY_NOT_FOUND,
220+ FunctionNotFound => nvmlReturn_enum_NVML_ERROR_FUNCTION_NOT_FOUND,
221+ CorruptedInfoROM => nvmlReturn_enum_NVML_ERROR_CORRUPTED_INFOROM,
222+ GpuLost => nvmlReturn_enum_NVML_ERROR_GPU_IS_LOST,
223+ ResetRequired => nvmlReturn_enum_NVML_ERROR_RESET_REQUIRED,
224+ OperatingSystem => nvmlReturn_enum_NVML_ERROR_OPERATING_SYSTEM,
225+ LibRmVersionMismatch => nvmlReturn_enum_NVML_ERROR_LIB_RM_VERSION_MISMATCH,
226+ InUse => nvmlReturn_enum_NVML_ERROR_IN_USE,
227+ InsufficientMemory => nvmlReturn_enum_NVML_ERROR_MEMORY,
228+ NoData => nvmlReturn_enum_NVML_ERROR_NO_DATA,
229+ VgpuEccNotSupported => nvmlReturn_enum_NVML_ERROR_VGPU_ECC_NOT_SUPPORTED,
230+ Unknown => nvmlReturn_enum_NVML_ERROR_UNKNOWN,
231+ UnexpectedVariant ( code) => code,
232+ // For non-NVML errors, return UNKNOWN
233+ Utf8Error ( _)
234+ | NulError ( _)
235+ | LibloadingError ( _)
236+ | FailedToLoadSymbol ( _)
237+ | StringTooLong { .. }
238+ | IncorrectBits ( _)
239+ | SetReleaseFailed
240+ | GetPciInfoFailed
241+ | PciInfoToCFailed => nvmlReturn_enum_NVML_ERROR_UNKNOWN,
242+ }
243+ }
244+ }
245+
202246/// Helper to map a `&libloading::Error` into an `NvmlError`
203247pub fn nvml_sym < ' a , T > ( sym : Result < & ' a T , & libloading:: Error > ) -> Result < & ' a T , NvmlError > {
204248 sym. map_err ( |e| NvmlError :: FailedToLoadSymbol ( e. to_string ( ) ) )
0 commit comments