diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-22 11:48:59 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-22 11:48:59 +0200 |
| commit | 994539e1cd983d9aa512dad7be84adb8d364bd64 (patch) | |
| tree | 3d59adffc53869cd70d42ba4d4af38a383be3c95 | |
| parent | bdeb7d89cdeb744cf478c10a4c100ec3fa92eafa (diff) | |
| download | kernel-994539e1cd983d9aa512dad7be84adb8d364bd64.tar.xz kernel-994539e1cd983d9aa512dad7be84adb8d364bd64.zip | |
kernel: move device_number to kapi
| -rw-r--r-- | kapi/kapi/filesystem.hpp | 2 | ||||
| -rw-r--r-- | kapi/kapi/filesystem/device_number.hpp (renamed from kernel/kernel/filesystem/device_number.hpp) | 10 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/devfs/filesystem.cpp | 4 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/devfs/filesystem.hpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/device_number_registry.cpp | 15 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/device_number_registry.hpp | 9 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/ext2/filesystem.cpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/ext2/filesystem.hpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/filesystem.hpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/rootfs/filesystem.cpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/rootfs/filesystem.hpp | 5 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/vfs.cpp | 6 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/vfs.hpp | 5 |
13 files changed, 47 insertions, 34 deletions
diff --git a/kapi/kapi/filesystem.hpp b/kapi/kapi/filesystem.hpp index f293692d..b64d251d 100644 --- a/kapi/kapi/filesystem.hpp +++ b/kapi/kapi/filesystem.hpp @@ -1,6 +1,8 @@ #ifndef TEACHOS_KAPI_FILESYSTEM_HPP #define TEACHOS_KAPI_FILESYSTEM_HPP +#include <kapi/filesystem/device_number.hpp> // IWYU pragma: export + #include <kstd/result.hpp> #include <kstd/system_error.hpp> #include <kstd/units.hpp> diff --git a/kernel/kernel/filesystem/device_number.hpp b/kapi/kapi/filesystem/device_number.hpp index 0c158eca..55c813f5 100644 --- a/kernel/kernel/filesystem/device_number.hpp +++ b/kapi/kapi/filesystem/device_number.hpp @@ -1,10 +1,12 @@ -#ifndef TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_HPP -#define TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_HPP +#ifndef TEACHOS_KAPI_FILESYSTEM_DEVICE_NUMBER_HPP +#define TEACHOS_KAPI_FILESYSTEM_DEVICE_NUMBER_HPP + +// IWYU pragma: private, include <kapi/filesystem.hpp> #include <compare> #include <cstdint> -namespace kernel::filesystem +namespace kapi::filesystem { //! A POSIX device number. @@ -18,6 +20,6 @@ namespace kernel::filesystem constexpr auto friend operator<=>(device_number, device_number) noexcept -> std::strong_ordering = default; }; -} // namespace kernel::filesystem +} // namespace kapi::filesystem #endif 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 <kernel/filesystem/devfs/inode.hpp> #include <kernel/filesystem/device_inode.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/device_number_registry.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/filesystem.hpp> @@ -11,6 +10,7 @@ #include <kernel/filesystem/vfs_types.hpp> #include <kapi/devices.hpp> +#include <kapi/filesystem.hpp> #include <kstd/memory.hpp> #include <kstd/result.hpp> @@ -86,7 +86,7 @@ namespace kernel::filesystem::devfs } auto filesystem::create_inode(kstd::shared_ptr<kernel::filesystem::inode> const &, std::string_view, - vfs_types::inode_type, std::optional<device_number>) + vfs_types::inode_type, std::optional<kapi::filesystem::device_number>) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> { 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 <kernel/filesystem/device_inode.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/system_error.hpp> @@ -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<kernel::filesystem::inode> const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional<device_number> raw_device = std::nullopt) + std::optional<kapi::filesystem::device_number> raw_device = std::nullopt) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> override; private: 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 <kernel/filesystem/device_number_registry.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/file_type.hpp> #include <kernel/filesystem/file_type_bindings.hpp> #include <kapi/devices.hpp> +#include <kapi/filesystem.hpp> #include <kstd/memory.hpp> #include <kstd/result.hpp> @@ -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<kstd::shared_ptr<kapi::devices::device>> { 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<device_number> + auto device_number_registry::number_of(kapi::devices::device const & device) const + -> kstd::result<kapi::filesystem::device_number> { 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 <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/file_type.hpp> #include <kapi/devices.hpp> +#include <kapi/filesystem.hpp> #include <kstd/memory.hpp> #include <kstd/result.hpp> @@ -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<kapi::devices::device> 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<kstd::shared_ptr<kapi::devices::device>>; //! 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<device_number>; + [[nodiscard]] auto number_of(kapi::devices::device const & device) const + -> kstd::result<kapi::filesystem::device_number>; //! 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 <kernel/filesystem/ext2/filesystem.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/ext2/block_group_descriptor.hpp> #include <kernel/filesystem/ext2/error.hpp> @@ -12,6 +11,7 @@ #include <kernel/filesystem/type.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> #include <kapi/system.hpp> #include <kstd/cstring.hpp> @@ -172,7 +172,8 @@ namespace kernel::filesystem::ext2 } auto filesystem::create_inode(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name, - vfs_types::inode_type inode_type, std::optional<device_number> raw_device) + vfs_types::inode_type inode_type, + std::optional<kapi::filesystem::device_number> raw_device) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> { 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 <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/ext2/block_group_descriptor.hpp> #include <kernel/filesystem/ext2/inode.hpp> #include <kernel/filesystem/ext2/superblock.hpp> @@ -9,6 +8,8 @@ #include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/system_error.hpp> @@ -81,7 +82,7 @@ namespace kernel::filesystem::ext2 */ [[nodiscard]] auto create_inode(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional<device_number> raw_device = std::nullopt) + std::optional<kapi::filesystem::device_number> raw_device = std::nullopt) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> 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 <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/system_error.hpp> @@ -66,7 +67,7 @@ namespace kernel::filesystem */ [[nodiscard]] virtual auto create_inode(kstd::shared_ptr<inode> const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional<device_number> raw_device = std::nullopt) + std::optional<kapi::filesystem::device_number> raw_device = std::nullopt) -> kstd::result<kstd::shared_ptr<inode>> = 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 <kernel/filesystem/rootfs/filesystem.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/inode.hpp> @@ -8,6 +7,8 @@ #include <kernel/filesystem/type.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/system_error.hpp> @@ -51,7 +52,7 @@ namespace kernel::filesystem::rootfs } auto filesystem::create_inode(kstd::shared_ptr<kernel::filesystem::inode> const &, std::string_view, - vfs_types::inode_type, std::optional<device_number>) + vfs_types::inode_type, std::optional<kapi::filesystem::device_number>) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> { 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 <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/string.hpp> @@ -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<kernel::filesystem::inode> const & parent, std::string_view name, vfs_types::inode_type inode_type, - std::optional<device_number> raw_device = std::nullopt) + std::optional<kapi::filesystem::device_number> raw_device = std::nullopt) -> kstd::result<kstd::shared_ptr<kernel::filesystem::inode>> 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 <kernel/filesystem/constants.hpp> #include <kernel/filesystem/dentry.hpp> #include <kernel/filesystem/devfs/filesystem.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/mount.hpp> @@ -12,6 +11,7 @@ #include <kernel/filesystem/rootfs/filesystem.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> #include <kapi/system.hpp> #include <kstd/memory.hpp> @@ -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<device_number> raw_device) - -> kstd::result<void> + auto vfs::create_inode(std::string_view path, vfs_types::inode_type type, + std::optional<kapi::filesystem::device_number> raw_device) -> kstd::result<void> { 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 <kernel/filesystem/dentry.hpp> #include <kernel/filesystem/devfs/filesystem.hpp> -#include <kernel/filesystem/device_number.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/mount.hpp> #include <kernel/filesystem/mount_table.hpp> #include <kernel/filesystem/vfs_types.hpp> +#include <kapi/filesystem.hpp> + #include <kstd/memory.hpp> #include <kstd/result.hpp> #include <kstd/system_error.hpp> @@ -119,7 +120,7 @@ namespace kernel::filesystem auto graft_persistent_device_fs(kstd::shared_ptr<devfs::filesystem> const & device_fs) -> void; auto create_inode(std::string_view path, vfs_types::inode_type type, - std::optional<device_number> raw_device = std::nullopt) -> kstd::result<void>; + std::optional<kapi::filesystem::device_number> raw_device = std::nullopt) -> kstd::result<void>; mount_table m_mount_table{}; }; |
