aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-21 16:22:23 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-26 21:17:37 +0100
commit6c172389b562a08a6540574d6fbdf6a5bdce37b8 (patch)
tree117a54580d50a7702f88ea7ff30c9b9c8317b978 /kernel/include
parentffb2accb09a013d8da16acd824c846bc1acfd8e4 (diff)
downloadteachos-6c172389b562a08a6540574d6fbdf6a5bdce37b8.tar.xz
teachos-6c172389b562a08a6540574d6fbdf6a5bdce37b8.zip
simplify architecture again
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/device_file.hpp32
-rw-r--r--kernel/include/kernel/filesystem/device_inode.hpp14
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_inode.hpp6
-rw-r--r--kernel/include/kernel/filesystem/file.hpp25
-rw-r--r--kernel/include/kernel/filesystem/inode.hpp7
-rw-r--r--kernel/include/kernel/filesystem/inode_file.hpp24
-rw-r--r--kernel/include/kernel/filesystem/open_file_description.hpp6
7 files changed, 20 insertions, 94 deletions
diff --git a/kernel/include/kernel/filesystem/device_file.hpp b/kernel/include/kernel/filesystem/device_file.hpp
deleted file mode 100644
index 22ddb49..0000000
--- a/kernel/include/kernel/filesystem/device_file.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-
-#include "kernel/devices/block_device.hpp"
-#include "kernel/devices/device.hpp"
-#include "kernel/filesystem/file.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct device_file : file
- {
- explicit device_file(kstd::shared_ptr<inode> const & inode);
-
- 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:
- using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
- std::byte * scratch, void * buffer);
- auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t;
-
- [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &;
- };
-} // namespace filesystem
-
-#endif
diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp
index 10e40b3..ce0f91c 100644
--- a/kernel/include/kernel/filesystem/device_inode.hpp
+++ b/kernel/include/kernel/filesystem/device_inode.hpp
@@ -1,24 +1,28 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
+#include "kernel/devices/block_device.hpp"
#include "kernel/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem
{
- struct file;
-
struct device_inode : inode
{
explicit device_inode(kstd::shared_ptr<devices::device> const & device);
- [[nodiscard]] auto open_file() -> kstd::shared_ptr<file> override;
-
- [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &;
+ 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:
+ using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
+ std::byte * scratch, void * buffer);
+ auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t;
+
kstd::shared_ptr<devices::device> m_device;
};
} // namespace filesystem
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
index e6e8e99..5f4d16a 100644
--- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
+++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
@@ -2,18 +2,20 @@
#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_INODE_HPP
#include "kernel/filesystem/ext2/ext2_file.hpp"
-#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem::ext2
{
struct ext2_inode : inode
{
explicit ext2_inode();
- [[nodiscard]] auto open_file() -> kstd::shared_ptr<filesystem::file> 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:
kstd::shared_ptr<ext2_file> m_file;
diff --git a/kernel/include/kernel/filesystem/file.hpp b/kernel/include/kernel/filesystem/file.hpp
deleted file mode 100644
index 522f078..0000000
--- a/kernel/include/kernel/filesystem/file.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct file
- {
- explicit file(kstd::shared_ptr<inode> const & inode);
- virtual ~file() = default;
-
- virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
- virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
-
- protected:
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp
index 1083d13..94ccd89 100644
--- a/kernel/include/kernel/filesystem/inode.hpp
+++ b/kernel/include/kernel/filesystem/inode.hpp
@@ -3,10 +3,10 @@
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem
{
- struct file;
-
struct inode : kstd::enable_shared_from_this<inode>
{
enum class inode_kind
@@ -20,7 +20,8 @@ namespace filesystem
virtual ~inode() = default;
- [[nodiscard]] virtual auto open_file() -> kstd::shared_ptr<file> = 0;
+ virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
+ virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
[[nodiscard]] auto is_directory() const -> bool;
[[nodiscard]] auto is_regular() const -> bool;
diff --git a/kernel/include/kernel/filesystem/inode_file.hpp b/kernel/include/kernel/filesystem/inode_file.hpp
deleted file mode 100644
index f87b77c..0000000
--- a/kernel/include/kernel/filesystem/inode_file.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-
-#include "kernel/filesystem/file.hpp"
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct inode_file : file
- {
- explicit inode_file(kstd::shared_ptr<inode> const & inode);
-
- 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;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/open_file_description.hpp b/kernel/include/kernel/filesystem/open_file_description.hpp
index 5ff094d..3c97d50 100644
--- a/kernel/include/kernel/filesystem/open_file_description.hpp
+++ b/kernel/include/kernel/filesystem/open_file_description.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
-#include "file.hpp"
+#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
@@ -11,7 +11,7 @@ namespace filesystem
{
struct open_file_description
{
- open_file_description(kstd::shared_ptr<file> const & file);
+ open_file_description(kstd::shared_ptr<inode> const & inode);
~open_file_description() = default;
@@ -19,7 +19,7 @@ namespace filesystem
auto write(void const * buffer, size_t size) -> size_t;
private:
- kstd::shared_ptr<file> m_file;
+ kstd::shared_ptr<inode> m_inode;
size_t m_offset;
};