From eee0b7c3ff2792927434a89313acb776fb5c29d0 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 7 Jul 2026 03:11:16 +0300 Subject: [PATCH] Kernel: Make ioctl take unsigned long instead of int this is what linux does :D also fix one or two `return ioctl` instead of `return ioctl_impl` --- kernel/include/kernel/Audio/Controller.h | 2 +- kernel/include/kernel/Device/FramebufferDevice.h | 2 +- kernel/include/kernel/FS/Inode.h | 4 ++-- kernel/include/kernel/Networking/NetworkInterface.h | 2 +- kernel/include/kernel/Networking/NetworkSocket.h | 2 +- kernel/include/kernel/Networking/TCPSocket.h | 2 +- kernel/include/kernel/Networking/UDPSocket.h | 2 +- kernel/include/kernel/Process.h | 2 +- kernel/include/kernel/Terminal/PseudoTerminal.h | 2 +- kernel/include/kernel/Terminal/TTY.h | 2 +- kernel/include/kernel/USB/HID/Joystick.h | 2 +- kernel/kernel/Audio/Controller.cpp | 8 ++++---- kernel/kernel/Device/FramebufferDevice.cpp | 6 +++--- kernel/kernel/FS/Inode.cpp | 2 +- kernel/kernel/Networking/NetworkInterface.cpp | 2 +- kernel/kernel/Networking/NetworkSocket.cpp | 2 +- kernel/kernel/Networking/TCPSocket.cpp | 2 +- kernel/kernel/Networking/UDPSocket.cpp | 2 +- kernel/kernel/Process.cpp | 2 +- kernel/kernel/Terminal/PseudoTerminal.cpp | 4 ++-- kernel/kernel/Terminal/TTY.cpp | 4 ++-- kernel/kernel/USB/HID/Joystick.cpp | 4 ++-- userspace/libraries/LibC/include/sys/ioctl.h | 2 +- userspace/libraries/LibC/sys/ioctl.cpp | 2 +- 24 files changed, 33 insertions(+), 33 deletions(-) diff --git a/kernel/include/kernel/Audio/Controller.h b/kernel/include/kernel/Audio/Controller.h index 662e67cb..d5ffce28 100644 --- a/kernel/include/kernel/Audio/Controller.h +++ b/kernel/include/kernel/Audio/Controller.h @@ -38,7 +38,7 @@ namespace Kernel BAN::ErrorOr write_impl(off_t, BAN::ConstByteSpan) override; - BAN::ErrorOr ioctl_impl(int cmd, void* arg) override; + BAN::ErrorOr ioctl_impl(unsigned long request, void* arg) override; protected: ThreadBlocker m_sample_data_blocker; diff --git a/kernel/include/kernel/Device/FramebufferDevice.h b/kernel/include/kernel/Device/FramebufferDevice.h index 3e88dbab..20c9b333 100644 --- a/kernel/include/kernel/Device/FramebufferDevice.h +++ b/kernel/include/kernel/Device/FramebufferDevice.h @@ -36,7 +36,7 @@ namespace Kernel virtual BAN::ErrorOr read_impl(off_t, BAN::ByteSpan) override; virtual BAN::ErrorOr write_impl(off_t, BAN::ConstByteSpan) override; - BAN::ErrorOr ioctl_impl(int cmd, void* arg) override; + BAN::ErrorOr ioctl_impl(unsigned long request, void* arg) override; virtual bool can_read_impl() const override { return true; } virtual bool can_write_impl() const override { return true; } diff --git a/kernel/include/kernel/FS/Inode.h b/kernel/include/kernel/FS/Inode.h index 37a5afa2..83063a81 100644 --- a/kernel/include/kernel/FS/Inode.h +++ b/kernel/include/kernel/FS/Inode.h @@ -150,7 +150,7 @@ namespace Kernel bool has_error() const { return has_error_impl(); } bool has_hungup() const { return has_hungup_impl(); } - BAN::ErrorOr ioctl(int request, void* arg); + BAN::ErrorOr ioctl(unsigned long request, void* arg); BAN::ErrorOr add_epoll(class Epoll*); void del_epoll(class Epoll*); @@ -199,7 +199,7 @@ namespace Kernel virtual bool has_error_impl() const = 0; virtual bool has_hungup_impl() const = 0; - virtual BAN::ErrorOr ioctl_impl(int, void*) { return BAN::Error::from_errno(ENOTSUP); } + virtual BAN::ErrorOr ioctl_impl(unsigned long, void*) { return BAN::Error::from_errno(ENOTSUP); } protected: // TODO: this is supposed to be const I guess? diff --git a/kernel/include/kernel/Networking/NetworkInterface.h b/kernel/include/kernel/Networking/NetworkInterface.h index 708b1bdb..a88ea6d0 100644 --- a/kernel/include/kernel/Networking/NetworkInterface.h +++ b/kernel/include/kernel/Networking/NetworkInterface.h @@ -92,7 +92,7 @@ namespace Kernel virtual BAN::ErrorOr send_raw_bytes(BAN::Span buffers) = 0; private: - BAN::ErrorOr ioctl_impl(int, void*) override; + BAN::ErrorOr ioctl_impl(unsigned long, void*) override; private: const Type m_type; diff --git a/kernel/include/kernel/Networking/NetworkSocket.h b/kernel/include/kernel/Networking/NetworkSocket.h index 107e6ce2..6581477f 100644 --- a/kernel/include/kernel/Networking/NetworkSocket.h +++ b/kernel/include/kernel/Networking/NetworkSocket.h @@ -54,7 +54,7 @@ namespace Kernel protected: NetworkSocket(NetworkLayer&, const Socket::Info&); - virtual BAN::ErrorOr ioctl_impl(int request, void* arg) override; + virtual BAN::ErrorOr ioctl_impl(unsigned long request, void* arg) override; virtual BAN::ErrorOr getsockname_impl(sockaddr*, socklen_t*) override; virtual BAN::ErrorOr getpeername_impl(sockaddr*, socklen_t*) override = 0; diff --git a/kernel/include/kernel/Networking/TCPSocket.h b/kernel/include/kernel/Networking/TCPSocket.h index 36ce26b4..95528da9 100644 --- a/kernel/include/kernel/Networking/TCPSocket.h +++ b/kernel/include/kernel/Networking/TCPSocket.h @@ -66,7 +66,7 @@ namespace Kernel BAN::ErrorOr getsockopt_impl(int, int, void*, socklen_t*) override; BAN::ErrorOr setsockopt_impl(int, int, const void*, socklen_t) override; - BAN::ErrorOr ioctl_impl(int, void*) override; + BAN::ErrorOr ioctl_impl(unsigned long, void*) override; void receive_packet(BAN::ConstByteSpan, const sockaddr* sender, socklen_t sender_len, uint32_t validated_cksums) override; diff --git a/kernel/include/kernel/Networking/UDPSocket.h b/kernel/include/kernel/Networking/UDPSocket.h index 3ca63d09..44a093f3 100644 --- a/kernel/include/kernel/Networking/UDPSocket.h +++ b/kernel/include/kernel/Networking/UDPSocket.h @@ -41,7 +41,7 @@ namespace Kernel BAN::ErrorOr getsockopt_impl(int, int, void*, socklen_t*) override; BAN::ErrorOr setsockopt_impl(int, int, const void*, socklen_t) override; - BAN::ErrorOr ioctl_impl(int, void*) override; + BAN::ErrorOr ioctl_impl(unsigned long, void*) override; bool can_read_impl() const override { return !m_packets.empty(); } bool can_write_impl() const override { return true; } diff --git a/kernel/include/kernel/Process.h b/kernel/include/kernel/Process.h index 29ab7fd3..fe361a2f 100644 --- a/kernel/include/kernel/Process.h +++ b/kernel/include/kernel/Process.h @@ -136,7 +136,7 @@ namespace Kernel BAN::ErrorOr sys_recvmsg(int socket, msghdr* message, int flags); BAN::ErrorOr sys_sendmsg(int socket, const msghdr* message, int flags); - BAN::ErrorOr sys_ioctl(int fildes, int request, void* arg); + BAN::ErrorOr sys_ioctl(int fildes, unsigned long request, void* arg); BAN::ErrorOr sys_pselect(sys_pselect_t* arguments); BAN::ErrorOr sys_ppoll(pollfd* fds, nfds_t nfds, const timespec* tmp_p, const sigset_t* sigmask); diff --git a/kernel/include/kernel/Terminal/PseudoTerminal.h b/kernel/include/kernel/Terminal/PseudoTerminal.h index 8e932026..3833729f 100644 --- a/kernel/include/kernel/Terminal/PseudoTerminal.h +++ b/kernel/include/kernel/Terminal/PseudoTerminal.h @@ -32,7 +32,7 @@ namespace Kernel void on_close(int) override; - BAN::ErrorOr ioctl_impl(int, void*) override; + BAN::ErrorOr ioctl_impl(unsigned long, void*) override; private: PseudoTerminalMaster(BAN::UniqPtr, mode_t, uid_t, gid_t); diff --git a/kernel/include/kernel/Terminal/TTY.h b/kernel/include/kernel/Terminal/TTY.h index c28ba0f2..644bfe65 100644 --- a/kernel/include/kernel/Terminal/TTY.h +++ b/kernel/include/kernel/Terminal/TTY.h @@ -68,7 +68,7 @@ namespace Kernel virtual bool has_error_impl() const override { return false; } virtual bool has_hungup_impl() const override { return false; } - virtual BAN::ErrorOr ioctl_impl(int, void*) override; + virtual BAN::ErrorOr ioctl_impl(unsigned long, void*) override; private: bool putchar(uint8_t ch); diff --git a/kernel/include/kernel/USB/HID/Joystick.h b/kernel/include/kernel/USB/HID/Joystick.h index 0c12de4d..0c94e7e4 100644 --- a/kernel/include/kernel/USB/HID/Joystick.h +++ b/kernel/include/kernel/USB/HID/Joystick.h @@ -34,7 +34,7 @@ namespace Kernel BAN::ErrorOr read_impl(off_t, BAN::ByteSpan) override; bool can_read_impl() const override { return true; } - BAN::ErrorOr ioctl_impl(int request, void* arg) override; + BAN::ErrorOr ioctl_impl(unsigned long request, void* arg) override; private: USBJoystick(USBHIDDriver&); diff --git a/kernel/kernel/Audio/Controller.cpp b/kernel/kernel/Audio/Controller.cpp index c62dfd53..cc3a1b04 100644 --- a/kernel/kernel/Audio/Controller.cpp +++ b/kernel/kernel/Audio/Controller.cpp @@ -77,9 +77,9 @@ namespace Kernel return to_copy; } - BAN::ErrorOr AudioController::ioctl_impl(int cmd, void* arg) + BAN::ErrorOr AudioController::ioctl_impl(unsigned long request, void* arg) { - switch (cmd) + switch (request) { case SND_GET_CHANNELS: *static_cast(arg) = get_channels(); @@ -92,7 +92,7 @@ namespace Kernel { SpinLockGuard _(m_spinlock); *static_cast(arg) = m_sample_data->size(); - if (cmd == SND_RESET_BUFFER) + if (request == SND_RESET_BUFFER) m_sample_data->pop(m_sample_data->size()); return 0; } @@ -113,7 +113,7 @@ namespace Kernel return 0; } - return CharacterDevice::ioctl_impl(cmd, arg); + return CharacterDevice::ioctl_impl(request, arg); } } diff --git a/kernel/kernel/Device/FramebufferDevice.cpp b/kernel/kernel/Device/FramebufferDevice.cpp index 570a8567..ade0b653 100644 --- a/kernel/kernel/Device/FramebufferDevice.cpp +++ b/kernel/kernel/Device/FramebufferDevice.cpp @@ -135,9 +135,9 @@ namespace Kernel return bytes_to_copy; } - BAN::ErrorOr FramebufferDevice::ioctl_impl(int cmd, void* arg) + BAN::ErrorOr FramebufferDevice::ioctl_impl(unsigned long request, void* arg) { - switch (cmd) + switch (request) { case FB_MSYNC_RECTANGLE: { @@ -152,7 +152,7 @@ namespace Kernel } } - return CharacterDevice::ioctl(cmd, arg); + return CharacterDevice::ioctl_impl(request, arg); } uint32_t FramebufferDevice::get_pixel(uint32_t x, uint32_t y) const diff --git a/kernel/kernel/FS/Inode.cpp b/kernel/kernel/FS/Inode.cpp index 2de10120..4a31c03a 100644 --- a/kernel/kernel/FS/Inode.cpp +++ b/kernel/kernel/FS/Inode.cpp @@ -316,7 +316,7 @@ namespace Kernel return {}; } - BAN::ErrorOr Inode::ioctl(int request, void* arg) + BAN::ErrorOr Inode::ioctl(unsigned long request, void* arg) { auto ret = ioctl_impl(request, arg); if (!ret.is_error() || ret.error().get_error_code() != ENOTSUP) diff --git a/kernel/kernel/Networking/NetworkInterface.cpp b/kernel/kernel/Networking/NetworkInterface.cpp index b21c1f61..25da98e8 100644 --- a/kernel/kernel/Networking/NetworkInterface.cpp +++ b/kernel/kernel/Networking/NetworkInterface.cpp @@ -45,7 +45,7 @@ namespace Kernel } } - BAN::ErrorOr NetworkInterface::ioctl_impl(int request, void* arg) + BAN::ErrorOr NetworkInterface::ioctl_impl(unsigned long request, void* arg) { if (arg == nullptr) { diff --git a/kernel/kernel/Networking/NetworkSocket.cpp b/kernel/kernel/Networking/NetworkSocket.cpp index 91847b54..cb73e46e 100644 --- a/kernel/kernel/Networking/NetworkSocket.cpp +++ b/kernel/kernel/Networking/NetworkSocket.cpp @@ -108,7 +108,7 @@ namespace Kernel m_address_len = addr_len; } - BAN::ErrorOr NetworkSocket::ioctl_impl(int request, void* arg) + BAN::ErrorOr NetworkSocket::ioctl_impl(unsigned long request, void* arg) { switch (request) { diff --git a/kernel/kernel/Networking/TCPSocket.cpp b/kernel/kernel/Networking/TCPSocket.cpp index a8519800..5827ca01 100644 --- a/kernel/kernel/Networking/TCPSocket.cpp +++ b/kernel/kernel/Networking/TCPSocket.cpp @@ -402,7 +402,7 @@ namespace Kernel return {}; } - BAN::ErrorOr TCPSocket::ioctl_impl(int request, void* argument) + BAN::ErrorOr TCPSocket::ioctl_impl(unsigned long request, void* argument) { switch (request) { diff --git a/kernel/kernel/Networking/UDPSocket.cpp b/kernel/kernel/Networking/UDPSocket.cpp index b5275146..beac4d63 100644 --- a/kernel/kernel/Networking/UDPSocket.cpp +++ b/kernel/kernel/Networking/UDPSocket.cpp @@ -336,7 +336,7 @@ namespace Kernel return {}; } - BAN::ErrorOr UDPSocket::ioctl_impl(int request, void* argument) + BAN::ErrorOr UDPSocket::ioctl_impl(unsigned long request, void* argument) { switch (request) { diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index dcea5c51..217b9d44 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -2043,7 +2043,7 @@ namespace Kernel return TRY(m_open_file_descriptors.sendmsg(socket, message, flags)); } - BAN::ErrorOr Process::sys_ioctl(int fildes, int request, void* arg) + BAN::ErrorOr Process::sys_ioctl(int fildes, unsigned long request, void* arg) { auto inode = TRY(m_open_file_descriptors.inode_of(fildes)); return TRY(inode->ioctl(request, arg)); diff --git a/kernel/kernel/Terminal/PseudoTerminal.cpp b/kernel/kernel/Terminal/PseudoTerminal.cpp index 7fbc3c1b..32f12352 100644 --- a/kernel/kernel/Terminal/PseudoTerminal.cpp +++ b/kernel/kernel/Terminal/PseudoTerminal.cpp @@ -157,7 +157,7 @@ namespace Kernel slave->m_write_blocker.unblock(); } - BAN::ErrorOr PseudoTerminalMaster::ioctl_impl(int request, void* argument) + BAN::ErrorOr PseudoTerminalMaster::ioctl_impl(unsigned long request, void* argument) { switch (request) { @@ -174,7 +174,7 @@ namespace Kernel return BAN::Error::from_errno(ENODEV); } - return CharacterDevice::ioctl(request, argument); + return CharacterDevice::ioctl_impl(request, argument); } PseudoTerminalSlave::PseudoTerminalSlave(BAN::String&& name, uint32_t number, mode_t mode, uid_t uid, gid_t gid) diff --git a/kernel/kernel/Terminal/TTY.cpp b/kernel/kernel/Terminal/TTY.cpp index 4b03236e..52c4d4a7 100644 --- a/kernel/kernel/Terminal/TTY.cpp +++ b/kernel/kernel/Terminal/TTY.cpp @@ -133,7 +133,7 @@ namespace Kernel (void)Process::kill(-m_foreground_pgrp, SIGWINCH); } - BAN::ErrorOr TTY::ioctl_impl(int request, void* argument) + BAN::ErrorOr TTY::ioctl_impl(unsigned long request, void* argument) { switch (request) { @@ -204,7 +204,7 @@ namespace Kernel } } - return CharacterDevice::ioctl(request, argument); + return CharacterDevice::ioctl_impl(request, argument); } void TTY::on_key_event(LibInput::RawKeyEvent event) diff --git a/kernel/kernel/USB/HID/Joystick.cpp b/kernel/kernel/USB/HID/Joystick.cpp index c99519d0..1f53a014 100644 --- a/kernel/kernel/USB/HID/Joystick.cpp +++ b/kernel/kernel/USB/HID/Joystick.cpp @@ -185,7 +185,7 @@ namespace Kernel return to_copy; } - BAN::ErrorOr USBJoystick::ioctl_impl(int request, void* arg) + BAN::ErrorOr USBJoystick::ioctl_impl(unsigned long request, void* arg) { switch (request) { @@ -217,7 +217,7 @@ namespace Kernel ASSERT_NOT_REACHED(); } - return USBHIDDevice::ioctl(request, arg); + return USBHIDDevice::ioctl_impl(request, arg); } void USBJoystick::update() diff --git a/userspace/libraries/LibC/include/sys/ioctl.h b/userspace/libraries/LibC/include/sys/ioctl.h index c1779eb5..9b700ec2 100644 --- a/userspace/libraries/LibC/include/sys/ioctl.h +++ b/userspace/libraries/LibC/include/sys/ioctl.h @@ -82,7 +82,7 @@ struct fb_msync_region }; #define FB_MSYNC_RECTANGLE 90 /* msync a rectangular area in mmap'd framebuffer device */ -int ioctl(int, int, ...); +int ioctl(int, unsigned long, ...); __END_DECLS diff --git a/userspace/libraries/LibC/sys/ioctl.cpp b/userspace/libraries/LibC/sys/ioctl.cpp index a6afa093..476485eb 100644 --- a/userspace/libraries/LibC/sys/ioctl.cpp +++ b/userspace/libraries/LibC/sys/ioctl.cpp @@ -3,7 +3,7 @@ #include #include -int ioctl(int fildes, int request, ...) +int ioctl(int fildes, unsigned long request, ...) { va_list args; va_start(args, request);