aboutsummaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/filesystem/ext2/ext2_inode.cpp8
-rw-r--r--kernel/src/filesystem/inode_file.cpp31
2 files changed, 36 insertions, 3 deletions
diff --git a/kernel/src/filesystem/ext2/ext2_inode.cpp b/kernel/src/filesystem/ext2/ext2_inode.cpp
index 1522387..8131f43 100644
--- a/kernel/src/filesystem/ext2/ext2_inode.cpp
+++ b/kernel/src/filesystem/ext2/ext2_inode.cpp
@@ -1,19 +1,21 @@
#include "kernel/filesystem/ext2/ext2_inode.hpp"
-#include "kernel/filesystem/ext2/ext2_file.hpp"
+#include "kernel/filesystem/disk_file.hpp"
#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
+#include "kernel/filesystem/inode_file.hpp"
#include <kstd/memory>
namespace filesystem::ext2
{
- ext2_inode::ext2_inode()
+ ext2_inode::ext2_inode(kstd::shared_ptr<disk_file> const & disk_file)
: inode(inode_kind::regular)
+ , m_disk_file(disk_file)
{}
auto ext2_inode::open_file() const -> kstd::shared_ptr<file>
{
- return kstd::make_shared<ext2_file>();
+ return kstd::make_shared<inode_file>(m_disk_file);
}
} // namespace filesystem::ext2 \ No newline at end of file
diff --git a/kernel/src/filesystem/inode_file.cpp b/kernel/src/filesystem/inode_file.cpp
new file mode 100644
index 0000000..9c351da
--- /dev/null
+++ b/kernel/src/filesystem/inode_file.cpp
@@ -0,0 +1,31 @@
+#include "kernel/filesystem/inode_file.hpp"
+
+#include "kapi/system.hpp"
+
+#include "kernel/filesystem/disk_file.hpp"
+
+#include <kstd/memory>
+
+#include <cstddef>
+
+namespace filesystem
+{
+ inode_file::inode_file(kstd::shared_ptr<disk_file> const & disk_file)
+ : m_disk_file(disk_file)
+ {
+ if (!m_disk_file)
+ {
+ kapi::system::panic("[FILESYSTEM] inode_file constructed with null disk_file.");
+ }
+ }
+
+ auto inode_file::read(void * buffer, size_t offset, size_t size) const -> size_t
+ {
+ return m_disk_file->read(buffer, offset, size);
+ }
+
+ auto inode_file::write(void const * buffer, size_t offset, size_t size) -> size_t
+ {
+ return m_disk_file->write(buffer, offset, size);
+ }
+} // namespace filesystem \ No newline at end of file