aboutsummaryrefslogtreecommitdiff
path: root/kernel/filesystem/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/filesystem/include')
-rw-r--r--kernel/filesystem/include/filesystem/inode.hpp14
-rw-r--r--kernel/filesystem/include/filesystem/inode_file.hpp25
2 files changed, 39 insertions, 0 deletions
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