aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystem/devfs/filesystem.cpp4
-rw-r--r--kernel/kernel/filesystem/devfs/filesystem.hpp5
-rw-r--r--kernel/kernel/filesystem/device_number.hpp23
-rw-r--r--kernel/kernel/filesystem/device_number_registry.cpp15
-rw-r--r--kernel/kernel/filesystem/device_number_registry.hpp9
-rw-r--r--kernel/kernel/filesystem/ext2/filesystem.cpp5
-rw-r--r--kernel/kernel/filesystem/ext2/filesystem.hpp5
-rw-r--r--kernel/kernel/filesystem/filesystem.hpp5
-rw-r--r--kernel/kernel/filesystem/rootfs/filesystem.cpp5
-rw-r--r--kernel/kernel/filesystem/rootfs/filesystem.hpp5
-rw-r--r--kernel/kernel/filesystem/vfs.cpp6
-rw-r--r--kernel/kernel/filesystem/vfs.hpp5
12 files changed, 39 insertions, 53 deletions
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.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 <compare>
-#include <cstdint>
-
-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 <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{};
};