diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel/filesystem/devfs/inode.cpp | 19 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/device_number_registry.cpp | 1 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/device_number_registry.hpp | 4 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/device_number_registry.tests.cpp | 7 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/file_type.hpp | 18 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/file_type_bindings.hpp | 7 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/vfs.cpp | 4 |
7 files changed, 11 insertions, 49 deletions
diff --git a/kernel/kernel/filesystem/devfs/inode.cpp b/kernel/kernel/filesystem/devfs/inode.cpp index 033972ec..b1ac17c2 100644 --- a/kernel/kernel/filesystem/devfs/inode.cpp +++ b/kernel/kernel/filesystem/devfs/inode.cpp @@ -4,7 +4,6 @@ #include <kernel/filesystem/directory_listing_cursor.hpp> #include <kernel/filesystem/directory_listing_entry.hpp> #include <kernel/filesystem/error.hpp> -#include <kernel/filesystem/file_type.hpp> #include <kapi/filesystem.hpp> @@ -74,24 +73,8 @@ namespace kernel::filesystem::devfs } std::ranges::transform(begin, begin + to_read, std::ranges::begin(entries), [](auto const & entry) { - auto type = [&] { - switch (entry.type) - { - case kernel::filesystem::file_type::block: - return kapi::filesystem::file_type::block_device; - case kernel::filesystem::file_type::character: - return kapi::filesystem::file_type::character_device; - case kernel::filesystem::file_type::pipe: - return kapi::filesystem::file_type::fifo; - case kernel::filesystem::file_type::socket: - return kapi::filesystem::file_type::socket; - default: - return kapi::filesystem::file_type::regular; - } - }(); - return directory_listing_entry{.name = entry.name, - .type = type, + .type = entry.type, .inode_number = std::bit_cast<std::uint16_t>(entry.number)}; }); diff --git a/kernel/kernel/filesystem/device_number_registry.cpp b/kernel/kernel/filesystem/device_number_registry.cpp index 42663dba..64cdb062 100644 --- a/kernel/kernel/filesystem/device_number_registry.cpp +++ b/kernel/kernel/filesystem/device_number_registry.cpp @@ -1,7 +1,6 @@ #include <kernel/filesystem/device_number_registry.hpp> #include <kernel/filesystem/error.hpp> -#include <kernel/filesystem/file_type.hpp> #include <kernel/filesystem/file_type_bindings.hpp> #include <kapi/devices.hpp> diff --git a/kernel/kernel/filesystem/device_number_registry.hpp b/kernel/kernel/filesystem/device_number_registry.hpp index 2391f179..2f0f0226 100644 --- a/kernel/kernel/filesystem/device_number_registry.hpp +++ b/kernel/kernel/filesystem/device_number_registry.hpp @@ -1,8 +1,6 @@ #ifndef TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_REGISTRY_HPP #define TEACHOS_KERNEL_FILESYSTEM_DEVICE_NUMBER_REGISTRY_HPP -#include <kernel/filesystem/file_type.hpp> - #include <kapi/devices.hpp> #include <kapi/filesystem.hpp> #include <kapi/tracked_mutex.hpp> @@ -23,6 +21,8 @@ namespace kernel::filesystem //! A registry to assign stable device numbers to published devices. struct device_number_registry final : kapi::devices::facet_registry_observer { + using file_type = kapi::filesystem::file_type; + //! A single numbered device. //! //! Theses entries are used, for example, in devfs to provide access to devices. diff --git a/kernel/kernel/filesystem/device_number_registry.tests.cpp b/kernel/kernel/filesystem/device_number_registry.tests.cpp index 913acf9a..60e17337 100644 --- a/kernel/kernel/filesystem/device_number_registry.tests.cpp +++ b/kernel/kernel/filesystem/device_number_registry.tests.cpp @@ -1,6 +1,5 @@ #include <kernel/filesystem/device_number_registry.hpp> -#include <kernel/filesystem/file_type.hpp> #include <kernel/test_support/devices/block_device.hpp> #include <kernel/test_support/devices/driver.hpp> @@ -66,7 +65,7 @@ SCENARIO("Device number registry resolves and numbers published block devices", AND_THEN("resolve() finds the device by number") { - REQUIRE(registry.resolve(all[0].number, kernel::filesystem::file_type::block)); + REQUIRE(registry.resolve(all[0].number, kapi::filesystem::file_type::block_device)); } AND_THEN("number_of() finds the device number") @@ -79,7 +78,7 @@ SCENARIO("Device number registry resolves and numbers published block devices", auto number = registry.number_of(*device); CHECK(number); - auto resolved = registry.resolve(*number, kernel::filesystem::file_type::block); + auto resolved = registry.resolve(*number, kapi::filesystem::file_type::block_device); CHECK(resolved); REQUIRE(resolved == device); @@ -105,7 +104,7 @@ SCENARIO("Device number registry resolves and numbers published block devices", THEN("resolve() does not report it anymore") { - REQUIRE(!registry.resolve(*number, kernel::filesystem::file_type::block)); + REQUIRE(!registry.resolve(*number, kapi::filesystem::file_type::block_device)); } } } diff --git a/kernel/kernel/filesystem/file_type.hpp b/kernel/kernel/filesystem/file_type.hpp deleted file mode 100644 index 71370ea6..00000000 --- a/kernel/kernel/filesystem/file_type.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef TEACHOS_KERNEL_FILESYSTEM_FILE_TYPE_HPP -#define TEACHOS_KERNEL_FILESYSTEM_FILE_TYPE_HPP - -namespace kernel::filesystem -{ - - //! POSIX file types. - enum struct file_type - { - block, - character, - pipe, - socket, - }; - -} // namespace kernel::filesystem - -#endif diff --git a/kernel/kernel/filesystem/file_type_bindings.hpp b/kernel/kernel/filesystem/file_type_bindings.hpp index b4338024..da8e4efc 100644 --- a/kernel/kernel/filesystem/file_type_bindings.hpp +++ b/kernel/kernel/filesystem/file_type_bindings.hpp @@ -1,7 +1,6 @@ #ifndef TEACHOS_KERNEL_FILESYSTEM_FILE_TYPE_BINDINGS_HPP #define TEACHOS_KERNEL_FILESYSTEM_FILE_TYPE_BINDINGS_HPP -#include <kernel/filesystem/file_type.hpp> #include <kernel/filesystem/reserved_numbers.hpp> #include <kapi/filesystem.hpp> @@ -15,15 +14,15 @@ namespace kernel::filesystem struct file_type_binding // NOLINT(cppcoreguidelines-pro-type-member-init) { kapi::capabilities::facet_id facet; - file_type posix_type; + kapi::filesystem::file_type posix_type; }; //! Predefined bindings for facet + file type //! //! This array associates published facets with files types. constexpr auto inline file_type_bindings = std::array{ - file_type_binding{kapi::filesystem::character_special_file::id, file_type::character}, - file_type_binding{ kapi::filesystem::block_special_file::id, file_type::block}, + file_type_binding{kapi::filesystem::character_special_file::id, kapi::filesystem::file_type::character_device}, + file_type_binding{ kapi::filesystem::block_special_file::id, kapi::filesystem::file_type::block_device}, }; } // namespace kernel::filesystem diff --git a/kernel/kernel/filesystem/vfs.cpp b/kernel/kernel/filesystem/vfs.cpp index d8bcb6b6..4645fd54 100644 --- a/kernel/kernel/filesystem/vfs.cpp +++ b/kernel/kernel/filesystem/vfs.cpp @@ -6,7 +6,6 @@ #include <kernel/filesystem/device_number_registry.hpp> #include <kernel/filesystem/driver_registry.hpp> #include <kernel/filesystem/error.hpp> -#include <kernel/filesystem/file_type.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/mount.hpp> @@ -147,7 +146,8 @@ namespace kernel::filesystem return kstd::failure(vfs_errc::no_such_device); } - auto type = inode->is_block_device() ? file_type::block : file_type::character; + auto type = inode->is_block_device() ? kapi::filesystem::file_type::block_device + : kapi::filesystem::file_type::character_device; auto resolved_device = device_number_registry::get().resolve(*number, type); if (!resolved_device) { |
