From ab752cafbde3755e7a09b3ecae021a6727cb7112 Mon Sep 17 00:00:00 2001 From: PancakeTAS Date: Thu, 25 Jun 2026 11:19:54 +0200 Subject: Project hierarchy overhaul --- src/helper/ioctl.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/helper/ioctl.cpp (limited to 'src/helper/ioctl.cpp') diff --git a/src/helper/ioctl.cpp b/src/helper/ioctl.cpp new file mode 100644 index 0000000..21a1ccb --- /dev/null +++ b/src/helper/ioctl.cpp @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: MIT */ + +#include "drm++/helper/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; -- cgit v1.3.1