NVIDIA GPU loadable plugin
Source
/*
** Copyright 2001-2024 Zabbix SIA
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
**/
package nvml
import (
"golang.zabbix.com/sdk/errs"
)
// Go idiomatic error constants.
var (
ErrSuccess error
ErrUninitialized = errs.New("NVML error: NVML was not first initialized with nvmlInit()")
ErrInvalidArgument = errs.New("NVML error: A supplied argument is invalid")
ErrNotSupported = errs.New("NVML error: The requested operation is not available on target device")
ErrNoPermission = errs.New("NVML error: The current user does not have permission for operation")
ErrAlreadyInitialized = errs.New("NVML error: Multiple initializations are now allowed through ref counting")
ErrNotFound = errs.New("NVML error: A query to find an object was unsuccessful")
ErrInsufficientSize = errs.New("NVML error: An input argument is not large enough")
ErrInsufficientPower = errs.New("NVML error: A device's external power cables are not properly attached")
ErrDriverNotLoaded = errs.New("NVML error: NVIDIA driver is not loaded")
ErrTimeout = errs.New("NVML error: User provided timeout passed")
ErrIrqIssue = errs.New("NVML error: NVIDIA Kernel detected an interrupt issue with a GPU")
ErrLibraryNotFound = errs.New("NVML error: NVML Shared Library couldn't be found or loaded")
ErrFunctionNotFound = errs.New("NVML error: Local version of NVML doesn't implement this function")
ErrCorruptedInforom = errs.New("NVML error: infoROM is corrupted")
ErrGpuIsLost = errs.New("NVML error: The GPU has fallen off the bus or has otherwise become inaccessible")
ErrUnknown = errs.New("NVML error: An internal driver error occurred")
)
// MapNVMLResultToError maps NVML error codes to Go error types.
//
//nolint:gocyclo,cyclop
func mapNVMLResultToError(code int) error {
switch code {
case 0:
return ErrSuccess
case 1:
return ErrUninitialized
case 2:
return ErrInvalidArgument
case 3:
return ErrNotSupported
case 4:
return ErrNoPermission
case 5:
return ErrAlreadyInitialized
case 6:
return ErrNotFound
case 7: