diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-08-27 18:26:22 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-08-27 18:26:22 +0200 |
| commit | d5cd2c12ced66b8ad4c1e25292978d9ae9e35592 (patch) | |
| tree | a8f691327299f1d8431a826a4badeb55177391bd /kernel | |
| parent | e7cfb051725040f3a4054514b1b7087c966822b3 (diff) | |
| download | kernel-d5cd2c12ced66b8ad4c1e25292978d9ae9e35592.tar.xz kernel-d5cd2c12ced66b8ad4c1e25292978d9ae9e35592.zip | |
kernel/fs: devfs: implement basic stat
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel/filesystems/devfs/inode.cpp | 13 | ||||
| -rw-r--r-- | kernel/kernel/filesystems/devfs/inode.hpp | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/kernel/kernel/filesystems/devfs/inode.cpp b/kernel/kernel/filesystems/devfs/inode.cpp index e79a82e0..fb26e34e 100644 --- a/kernel/kernel/filesystems/devfs/inode.cpp +++ b/kernel/kernel/filesystems/devfs/inode.cpp @@ -2,6 +2,7 @@ #include <kernel/vfs/device_number_registry.hpp> #include <kernel/vfs/error.hpp> +#include <kernel/vfs/inode.hpp> #include <kapi/filesystem.hpp> @@ -26,7 +27,8 @@ namespace kernel::filesystems::devfs namespace { constexpr auto static sentinel = kapi::filesystem::directory_cursor{std::numeric_limits<std::uint64_t>::max()}; - } + constexpr auto static root_inode_number = std::numeric_limits<std::uint64_t>::max() - 1; + } // namespace auto inode::read(std::span<std::byte>, kstd::bytes) const -> kstd::result<kstd::bytes> { @@ -43,6 +45,15 @@ namespace kernel::filesystems::devfs return true; } + auto inode::status() const -> kstd::result<kapi::filesystem::file_status> + { + return vfs::inode::status().transform([](auto status) { + status.inode_number = root_inode_number; + status.mode = 0544; // NOLINT(readability-magic-numbers) + return status; + }); + } + auto inode::read_directory(kapi::filesystem::directory_cursor position, std::span<kapi::filesystem::directory_entry> entries) const -> kstd::result<std::pair<std::size_t, kapi::filesystem::directory_cursor>> diff --git a/kernel/kernel/filesystems/devfs/inode.hpp b/kernel/kernel/filesystems/devfs/inode.hpp index 61bec8cf..c19671df 100644 --- a/kernel/kernel/filesystems/devfs/inode.hpp +++ b/kernel/kernel/filesystems/devfs/inode.hpp @@ -26,6 +26,8 @@ namespace kernel::filesystems::devfs [[nodiscard]] auto is_directory() const -> bool override; + [[nodiscard]] auto status() const -> kstd::result<kapi::filesystem::file_status> override; + [[nodiscard]] auto read_directory(kapi::filesystem::directory_cursor position, std::span<kapi::filesystem::directory_entry> entries) const -> kstd::result<std::pair<std::size_t, kapi::filesystem::directory_cursor>> override; |
