# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) # Copyright (c) 2018, Mellanox Technologies. All rights reserved. import os class PyverbsError(Exception): """ Base exception class for Pyverbs. Inherited by PyverbsRDMAError (for errors returned by rdma-core) and PyverbsUserError (for user-related errors found by Pyverbs, e.g. non-existing device name). """ def __init__(self, msg, error_code = -1): """ Initializes a PyverbsError instance :param msg: The exception's message :param error_code: errno value """ if error_code != -1: msg = '{msg}. Errno: {err}, {err_str}'.\ format(msg=msg, err=error_code, err_str=os.strerror(error_code)) super(PyverbsError, self).__init__(msg) class PyverbsRDMAError(PyverbsError): """ This exception is raised when an rdma-core function returns an error. """ def __init__(self, msg, error_code = -1): super(PyverbsRDMAError, self).__init__(msg, error_code) self._error_code = error_code @property def error_code(self): return self._error_code class PyverbsUserError(PyverbsError): """ This exception is raised when Pyverbs encounters an error resulting from user's action or input. """ def __init__(self, msg): """ Initializes a PyverbsUserError instance :param msg: The exception's message """ super(PyverbsUserError, self).__init__(msg)