From 62005f563e3c29b079c69380905a82fd0d91c975 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Mon, 16 Mar 2026 18:27:59 +0100 Subject: add first draft of inode metadata --- kernel/filesystem/src/inode.cpp | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'kernel/filesystem/src/inode.cpp') diff --git a/kernel/filesystem/src/inode.cpp b/kernel/filesystem/src/inode.cpp index a1427e2..17aa52a 100644 --- a/kernel/filesystem/src/inode.cpp +++ b/kernel/filesystem/src/inode.cpp @@ -3,13 +3,19 @@ #include "kapi/system.hpp" #include "devices/device.hpp" +#include "filesystem/inode_metadata.hpp" #include namespace filesystem { + inode::inode(inode_kind kind) + : m_kind(kind) + {} + inode::inode(devices::device * device) - : m_device(device) + : m_kind(inode_kind::device) + , m_device(device) { if (!m_device) { @@ -17,9 +23,33 @@ namespace filesystem } } + auto inode::metadata() const -> inode_metadata + { + auto meta = inode_metadata{}; + meta.kind = m_kind; + + if (is_device()) + { + meta.major = m_device->major(); + meta.minor = m_device->minor(); + } + + return meta; + } + + auto inode::is_directory() const -> bool + { + return m_kind == inode_kind::directory; + } + + auto inode::is_regular() const -> bool + { + return m_kind == inode_kind::regular; + } + auto inode::is_device() const -> bool { - return m_device != nullptr; + return m_kind == inode_kind::device; } auto inode::is_block_device() const -> bool -- cgit v1.2.3