aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystem/devfs/inode.cpp19
-rw-r--r--kernel/kernel/filesystem/device_number_registry.cpp1
-rw-r--r--kernel/kernel/filesystem/device_number_registry.hpp4
-rw-r--r--kernel/kernel/filesystem/device_number_registry.tests.cpp7
-rw-r--r--kernel/kernel/filesystem/file_type.hpp18
-rw-r--r--kernel/kernel/filesystem/file_type_bindings.hpp7
-rw-r--r--kernel/kernel/filesystem/vfs.cpp4
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)
{