aboutsummaryrefslogtreecommitdiff
path: root/kernel/filesystem
diff options
context:
space:
mode:
authormarcel.braun <marcel.braun@ost.ch>2026-03-15 14:18:16 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:42:58 +0100
commit6234691efe02fa095c6efa476606e8c5ff579710 (patch)
tree23501421b69a83918c676efb090ec527357fd1eb /kernel/filesystem
parent0e6a3205dccbc44b61cf9eb2d9ea906149f8295f (diff)
downloadteachos-6234691efe02fa095c6efa476606e8c5ff579710.tar.xz
teachos-6234691efe02fa095c6efa476606e8c5ff579710.zip
Add inode_file and inode structure
Diffstat (limited to 'kernel/filesystem')
-rw-r--r--kernel/filesystem/CMakeLists.txt10
-rw-r--r--kernel/filesystem/include/filesystem/inode.hpp14
-rw-r--r--kernel/filesystem/include/filesystem/inode_file.hpp25
-rw-r--r--kernel/filesystem/src/inode.cpp20
-rw-r--r--kernel/filesystem/src/inode_file.cpp33
5 files changed, 99 insertions, 3 deletions
diff --git a/kernel/filesystem/CMakeLists.txt b/kernel/filesystem/CMakeLists.txt
index a5a964f..126b54e 100644
--- a/kernel/filesystem/CMakeLists.txt
+++ b/kernel/filesystem/CMakeLists.txt
@@ -3,18 +3,22 @@ add_library("kernel::filesystem" ALIAS "kernel_filesystem")
target_sources("kernel_filesystem" PRIVATE
"src/device_file.cpp"
- "src/open_file_description.cpp"
"src/file_descriptor_table.cpp"
+ "src/inode_file.cpp"
+ "src/inode.cpp"
+ "src/open_file_description.cpp"
)
target_sources("kernel_filesystem" PUBLIC
FILE_SET HEADERS
BASE_DIRS "include"
FILES
- "include/filesystem/file.hpp"
"include/filesystem/device_file.hpp"
- "include/filesystem/open_file_description.hpp"
"include/filesystem/file_descriptor_table.hpp"
+ "include/filesystem/file.hpp"
+ "include/filesystem/inode_file.hpp"
+ "include/filesystem/inode.hpp"
+ "include/filesystem/open_file_description.hpp"
)
target_include_directories("kernel_filesystem" PUBLIC
diff --git a/kernel/filesystem/include/filesystem/inode.hpp b/kernel/filesystem/include/filesystem/inode.hpp
new file mode 100644
index 0000000..44ec09a
--- /dev/null
+++ b/kernel/filesystem/include/filesystem/inode.hpp
@@ -0,0 +1,14 @@
+#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
+#define TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
+
+#include <cstddef>
+namespace filesystem
+{
+ struct inode
+ {
+ auto read(void * buffer, size_t offset, size_t size) const -> size_t;
+ auto write(void const * buffer, size_t offset, size_t size) -> size_t;
+ };
+} // namespace filesystem
+
+#endif
diff --git a/kernel/filesystem/include/filesystem/inode_file.hpp b/kernel/filesystem/include/filesystem/inode_file.hpp
new file mode 100644
index 0000000..c091280
--- /dev/null
+++ b/kernel/filesystem/include/filesystem/inode_file.hpp
@@ -0,0 +1,25 @@
+#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
+#define TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
+
+#include "filesystem/file.hpp"
+#include "filesystem/inode.hpp"
+
+#include <cstddef>
+
+namespace filesystem
+{
+ struct inode_file : file
+ {
+ explicit inode_file(inode * inode);
+
+ auto open() -> void override;
+
+ auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
+ auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
+
+ private:
+ inode * m_inode;
+ };
+} // namespace filesystem
+
+#endif \ No newline at end of file
diff --git a/kernel/filesystem/src/inode.cpp b/kernel/filesystem/src/inode.cpp
new file mode 100644
index 0000000..7bca507
--- /dev/null
+++ b/kernel/filesystem/src/inode.cpp
@@ -0,0 +1,20 @@
+#include "filesystem/inode.hpp"
+
+#include "kapi/system.hpp"
+
+#include <cstddef>
+
+namespace filesystem
+{
+ auto inode::read(void * /*buffer*/, size_t /*offset*/, size_t /*size*/) const -> size_t
+ {
+ // TODO BA-FS26
+ return 0;
+ }
+
+ auto inode::write(void const *, size_t, size_t) -> size_t
+ {
+ kapi::system::panic("[FILESYSTEM] inode::write is not implemented yet");
+ return 0;
+ }
+} // namespace filesystem \ No newline at end of file
diff --git a/kernel/filesystem/src/inode_file.cpp b/kernel/filesystem/src/inode_file.cpp
new file mode 100644
index 0000000..071661f
--- /dev/null
+++ b/kernel/filesystem/src/inode_file.cpp
@@ -0,0 +1,33 @@
+#include "filesystem/inode_file.hpp"
+
+#include "kapi/system.hpp"
+
+#include "filesystem/inode.hpp"
+
+#include <cstddef>
+
+namespace filesystem
+{
+ inode_file::inode_file(inode * inode)
+ : m_inode(inode)
+ {
+ if (!m_inode)
+ {
+ kapi::system::panic("[FILESYSTEM] inode_file constructed with null inode");
+ }
+ }
+
+ auto inode_file::open() -> void
+ {
+ // Hook point for permission checks or lazy metadata loading.
+ }
+
+ auto inode_file::read(void * buffer, size_t offset, size_t size) const -> size_t
+ {
+ return m_inode->read(buffer, offset, size);
+ }
+ auto inode_file::write(void const * buffer, size_t offset, size_t size) -> size_t
+ {
+ return m_inode->write(buffer, offset, size);
+ }
+} // namespace filesystem \ No newline at end of file