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