| # 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) | |