From 41db52736919090d527a9c9884348b0a228ebc9e Mon Sep 17 00:00:00 2001 From: Liav A Date: Sun, 25 Jun 2023 13:07:58 +0300 Subject: [PATCH] LibCore: Add helpers to create block and character device files --- Userland/Libraries/LibCore/System.cpp | 14 ++++++++++++++ Userland/Libraries/LibCore/System.h | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/Userland/Libraries/LibCore/System.cpp b/Userland/Libraries/LibCore/System.cpp index 03842bb056..6b3e50eb95 100644 --- a/Userland/Libraries/LibCore/System.cpp +++ b/Userland/Libraries/LibCore/System.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -30,6 +31,7 @@ # include # include # include +# include #endif #if defined(AK_OS_LINUX) && !defined(MFD_CLOEXEC) @@ -445,6 +447,18 @@ ErrorOr fcntl(int fd, int command, ...) return rc; } +#ifdef AK_OS_SERENITY +ErrorOr create_block_device(StringView name, mode_t mode, unsigned major, unsigned minor) +{ + return Core::System::mknod(name, mode | S_IFBLK, makedev(major, minor)); +} + +ErrorOr create_char_device(StringView name, mode_t mode, unsigned major, unsigned minor) +{ + return Core::System::mknod(name, mode | S_IFCHR, makedev(major, minor)); +} +#endif + ErrorOr mmap(void* address, size_t size, int protection, int flags, int fd, off_t offset, [[maybe_unused]] size_t alignment, [[maybe_unused]] StringView name) { #ifdef AK_OS_SERENITY diff --git a/Userland/Libraries/LibCore/System.h b/Userland/Libraries/LibCore/System.h index 1ec1b59a15..7e987e0bd8 100644 --- a/Userland/Libraries/LibCore/System.h +++ b/Userland/Libraries/LibCore/System.h @@ -237,6 +237,11 @@ ErrorOr access(StringView pathname, int mode, int flags = 0); ErrorOr readlink(StringView pathname); ErrorOr poll(Span, int timeout); +#ifdef AK_OS_SERENITY +ErrorOr create_block_device(StringView name, mode_t mode, unsigned major, unsigned minor); +ErrorOr create_char_device(StringView name, mode_t mode, unsigned major, unsigned minor); +#endif + class AddressInfoVector { AK_MAKE_NONCOPYABLE(AddressInfoVector); AK_MAKE_DEFAULT_MOVABLE(AddressInfoVector);