From 994539e1cd983d9aa512dad7be84adb8d364bd64 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 22 Jul 2026 11:48:59 +0200 Subject: kernel: move device_number to kapi --- kernel/kernel/filesystem/devfs/filesystem.cpp | 4 ++-- kernel/kernel/filesystem/devfs/filesystem.hpp | 5 +++-- kernel/kernel/filesystem/device_number.hpp | 23 ---------------------- .../kernel/filesystem/device_number_registry.cpp | 15 +++++++------- .../kernel/filesystem/device_number_registry.hpp | 9 +++++---- kernel/kernel/filesystem/ext2/filesystem.cpp | 5 +++-- kernel/kernel/filesystem/ext2/filesystem.hpp | 5 +++-- kernel/kernel/filesystem/filesystem.hpp | 5 +++-- kernel/kernel/filesystem/rootfs/filesystem.cpp | 5 +++-- kernel/kernel/filesystem/rootfs/filesystem.hpp | 5 +++-- kernel/kernel/filesystem/vfs.cpp | 6 +++--- kernel/kernel/filesystem/vfs.hpp | 5 +++-- 12 files changed, 39 insertions(+), 53 deletions(-) delete mode 100644 kernel/kernel/filesystem/device_number.hpp (limited to 'kernel') diff --git a/kernel/kernel/filesystem/devfs/filesystem.cpp b/kernel/kernel/filesystem/devfs/filesystem.cpp index 01cebfb3..e7874372 100644 --- a/kernel/kernel/filesystem/devfs/filesystem.cpp +++ b/kernel/kernel/filesystem/devfs/filesystem.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include #include @@ -11,6 +10,7 @@ #include #include +#include #include #include @@ -86,7 +86,7 @@ namespace kernel::filesystem::devfs } auto filesystem::create_inode(kstd::shared_ptr const &, std::string_view, - vfs_types::inode_type, std::optional) + vfs_types::inode_type, std::optional) -> kstd::result> { return kstd::failure(vfs_errc::read_only_file_system); diff --git a/kernel/kernel/filesystem/devfs/filesystem.hpp b/kernel/kernel/filesystem/devfs/filesystem.hpp index cb6b912c..7e58cd83 100644 --- a/kernel/kernel/filesystem/devfs/filesystem.hpp +++ b/kernel/kernel/filesystem/devfs/filesystem.hpp @@ -2,11 +2,12 @@ #define TEACH_OS_KERNEL_FILESYSTEM_DEVFS_FILESYSTEM_HPP #include -#include #include #include #include +#include + #include #include #include @@ -37,7 +38,7 @@ namespace kernel::filesystem::devfs //! @return Always returns an error, as creating new inodes is not supported in devfs. [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional raw_device = std::nullopt) + std::optional raw_device = std::nullopt) -> kstd::result> override; private: diff --git a/kernel/kernel/filesystem/device_number.hpp b/kernel/kernel/filesystem/device_number.hpp deleted file mode 100644 index 0c158eca..00000000 --- a/kernel/kernel/filesystem/device_number.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_HPP -#define TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_HPP - -#include -#include - -namespace kernel::filesystem -{ - - //! A POSIX device number. - struct device_number - { - //! The major number, identifying the device class or driver. - std::uint8_t major; - //! The minor number, identifying the device instance. - std::uint8_t minor; - - constexpr auto friend operator<=>(device_number, device_number) noexcept -> std::strong_ordering = default; - }; - -} // namespace kernel::filesystem - -#endif diff --git a/kernel/kernel/filesystem/device_number_registry.cpp b/kernel/kernel/filesystem/device_number_registry.cpp index c3b576a5..430da00a 100644 --- a/kernel/kernel/filesystem/device_number_registry.cpp +++ b/kernel/kernel/filesystem/device_number_registry.cpp @@ -1,11 +1,11 @@ #include -#include #include #include #include #include +#include #include #include @@ -36,7 +36,7 @@ namespace kernel::filesystem : m_interface_registry{&interface_registry} {} - auto device_number_registry::resolve(device_number number, file_type type) const + auto device_number_registry::resolve(kapi::filesystem::device_number number, file_type type) const -> kstd::result> { populate(); @@ -57,7 +57,8 @@ namespace kernel::filesystem return kstd::failure(vfs_errc::no_such_device); } - auto device_number_registry::number_of(kapi::devices::device const & device) const -> kstd::result + auto device_number_registry::number_of(kapi::devices::device const & device) const + -> kstd::result { populate(); @@ -87,15 +88,15 @@ namespace kernel::filesystem for (auto const & binding : file_type_bindings) { - auto next_minor = decltype(device_number::minor){}; + auto next_minor = decltype(kapi::filesystem::device_number::minor){}; for (auto const & published : m_interface_registry->all(binding.interface)) { if (auto device = published.device().lock()) { - m_entries.emplace_back(device_number{.major = binding.major, .minor = next_minor}, // - binding.posix_type, // - published.name(), // + m_entries.emplace_back(kapi::filesystem::device_number{.major = binding.major, .minor = next_minor}, // + binding.posix_type, // + published.name(), // published.device()); ++next_minor; } diff --git a/kernel/kernel/filesystem/device_number_registry.hpp b/kernel/kernel/filesystem/device_number_registry.hpp index 1f2cedf7..0e30e226 100644 --- a/kernel/kernel/filesystem/device_number_registry.hpp +++ b/kernel/kernel/filesystem/device_number_registry.hpp @@ -1,10 +1,10 @@ #ifndef TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_REGISTRY_HPP #define TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_REGISTRY_HPP -#include #include #include +#include #include #include @@ -21,7 +21,7 @@ namespace kernel::filesystem //! Theses entries are used, for example, in devfs to provide access to devices. struct entry { - device_number number; + kapi::filesystem::device_number number; file_type type; kstd::string name; kstd::weak_ptr device; @@ -37,14 +37,15 @@ namespace kernel::filesystem //! @param number The device number. //! @param type The expected file type of the device. //! @return A device if a fitting entry is found, an error otherwise. - [[nodiscard]] auto resolve(device_number number, file_type type) const + [[nodiscard]] auto resolve(kapi::filesystem::device_number number, file_type type) const -> kstd::result>; //! Resolve a device to it's device number. //! //! @param device The device to find the number for. //! @return The device number associated with the given device, or an error otherwise. - [[nodiscard]] auto number_of(kapi::devices::device const & device) const -> kstd::result; + [[nodiscard]] auto number_of(kapi::devices::device const & device) const + -> kstd::result; //! Get all currently registered devices. //! diff --git a/kernel/kernel/filesystem/ext2/filesystem.cpp b/kernel/kernel/filesystem/ext2/filesystem.cpp index 9ea2f3d4..132d2398 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.cpp +++ b/kernel/kernel/filesystem/ext2/filesystem.cpp @@ -1,6 +1,5 @@ #include -#include #include #include #include @@ -12,6 +11,7 @@ #include #include +#include #include #include @@ -172,7 +172,8 @@ namespace kernel::filesystem::ext2 } auto filesystem::create_inode(kstd::shared_ptr const & parent, std::string_view name, - vfs_types::inode_type inode_type, std::optional raw_device) + vfs_types::inode_type inode_type, + std::optional raw_device) -> kstd::result> { if (!parent) diff --git a/kernel/kernel/filesystem/ext2/filesystem.hpp b/kernel/kernel/filesystem/ext2/filesystem.hpp index 3e0a6992..b8794a14 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.hpp +++ b/kernel/kernel/filesystem/ext2/filesystem.hpp @@ -1,7 +1,6 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP -#include #include #include #include @@ -9,6 +8,8 @@ #include #include +#include + #include #include #include @@ -81,7 +82,7 @@ namespace kernel::filesystem::ext2 */ [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional raw_device = std::nullopt) + std::optional raw_device = std::nullopt) -> kstd::result> override; /** diff --git a/kernel/kernel/filesystem/filesystem.hpp b/kernel/kernel/filesystem/filesystem.hpp index fc122be6..c8381adb 100644 --- a/kernel/kernel/filesystem/filesystem.hpp +++ b/kernel/kernel/filesystem/filesystem.hpp @@ -1,10 +1,11 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP -#include #include #include +#include + #include #include #include @@ -66,7 +67,7 @@ namespace kernel::filesystem */ [[nodiscard]] virtual auto create_inode(kstd::shared_ptr const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional raw_device = std::nullopt) + std::optional raw_device = std::nullopt) -> kstd::result> = 0; /** diff --git a/kernel/kernel/filesystem/rootfs/filesystem.cpp b/kernel/kernel/filesystem/rootfs/filesystem.cpp index 11c20bc9..ed221c19 100644 --- a/kernel/kernel/filesystem/rootfs/filesystem.cpp +++ b/kernel/kernel/filesystem/rootfs/filesystem.cpp @@ -1,6 +1,5 @@ #include -#include #include #include #include @@ -8,6 +7,8 @@ #include #include +#include + #include #include #include @@ -51,7 +52,7 @@ namespace kernel::filesystem::rootfs } auto filesystem::create_inode(kstd::shared_ptr const &, std::string_view, - vfs_types::inode_type, std::optional) + vfs_types::inode_type, std::optional) -> kstd::result> { return kstd::failure(vfs_errc::read_only_file_system); diff --git a/kernel/kernel/filesystem/rootfs/filesystem.hpp b/kernel/kernel/filesystem/rootfs/filesystem.hpp index 47e443ef..254a8a57 100644 --- a/kernel/kernel/filesystem/rootfs/filesystem.hpp +++ b/kernel/kernel/filesystem/rootfs/filesystem.hpp @@ -1,11 +1,12 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP -#include #include #include #include +#include + #include #include #include @@ -36,7 +37,7 @@ namespace kernel::filesystem::rootfs //! @return Always returns an error, as creating new inodes is not supported in rootfs. [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional raw_device = std::nullopt) + std::optional raw_device = std::nullopt) -> kstd::result> override; }; } // namespace kernel::filesystem::rootfs diff --git a/kernel/kernel/filesystem/vfs.cpp b/kernel/kernel/filesystem/vfs.cpp index 51c6daba..6533e027 100644 --- a/kernel/kernel/filesystem/vfs.cpp +++ b/kernel/kernel/filesystem/vfs.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -12,6 +11,7 @@ #include #include +#include #include #include @@ -186,8 +186,8 @@ namespace kernel::filesystem return create_inode(path, vfs_types::inode_type::regular); } - auto vfs::create_inode(std::string_view path, vfs_types::inode_type type, std::optional raw_device) - -> kstd::result + auto vfs::create_inode(std::string_view path, vfs_types::inode_type type, + std::optional raw_device) -> kstd::result { if (!path::is_valid_path(path)) { diff --git a/kernel/kernel/filesystem/vfs.hpp b/kernel/kernel/filesystem/vfs.hpp index 8f4f11ad..b965e426 100644 --- a/kernel/kernel/filesystem/vfs.hpp +++ b/kernel/kernel/filesystem/vfs.hpp @@ -3,12 +3,13 @@ #include #include -#include #include #include #include #include +#include + #include #include #include @@ -119,7 +120,7 @@ namespace kernel::filesystem auto graft_persistent_device_fs(kstd::shared_ptr const & device_fs) -> void; auto create_inode(std::string_view path, vfs_types::inode_type type, - std::optional raw_device = std::nullopt) -> kstd::result; + std::optional raw_device = std::nullopt) -> kstd::result; mount_table m_mount_table{}; }; -- cgit v1.2.3