aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystems/devfs/inode.cpp13
-rw-r--r--kernel/kernel/filesystems/devfs/inode.hpp2
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;