/* SPDX-License-Identifier: MIT */ #include "drm++/ioctl.hpp" #include #include #include using namespace drm::ioctl; Exception::Exception(int fd, unsigned long op) : m_fd(fd), m_op(op), m_syserrno(errno) { switch (errno) { case EBADF: this->m_code = Error::BadFileDescriptor; this->m_what = std::format( "ioctl({}, 0x{:x}) failed: Invalid file descriptor", this->m_fd, this->m_op ); break; case EINVAL: case ENOTTY: this->m_code = Error::InvalidArgument; this->m_what = std::format( "ioctl({}, 0x{:x}) failed: Invalid argument (errno {})", this->m_fd, this->m_op, this->m_syserrno ); break; case ENOTSUP: this->m_code = Error::NotSupported; this->m_what = std::format( "ioctl({}, 0x{:x}) failed: Operation not supported", this->m_fd, this->m_op ); break; default: this->m_code = Error::Other; this->m_what = std::format( "ioctl({}, 0x{:x}) failed: Unknown error (errno {})", this->m_fd, this->m_op, this->m_syserrno ); } } Exception::~Exception() = default;