summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit/FileMgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/KernelKit/FileMgr.h')
-rw-r--r--dev/kernel/KernelKit/FileMgr.h48
1 files changed, 47 insertions, 1 deletions
diff --git a/dev/kernel/KernelKit/FileMgr.h b/dev/kernel/KernelKit/FileMgr.h
index f925a96c..bad6cf85 100644
--- a/dev/kernel/KernelKit/FileMgr.h
+++ b/dev/kernel/KernelKit/FileMgr.h
@@ -27,7 +27,7 @@
/// @author Amlal El Mahrouss (amlal@nekernel.org)
//! Include filesystems that NeKernel supports.
-#include <FSKit/Ext2.h>
+#include <FSKit/Ext2+IFS.h>
#include <FSKit/HeFS.h>
#include <FSKit/NeFS.h>
@@ -177,6 +177,52 @@ class NeFileSystemMgr final : public IFilesystemMgr {
#endif // ifdef __FSKIT_INCLUDES_NEFS__
+#ifdef __FSKIT_INCLUDES_EXT2__
+/**
+ * @brief Based of IFilesystemMgr, takes care of managing NeFS
+ * disks.
+ */
+class Ext2FileSystemMgr final : public IFilesystemMgr {
+ public:
+ explicit Ext2FileSystemMgr();
+ ~Ext2FileSystemMgr() override;
+
+ public:
+ NE_COPY_DEFAULT(Ext2FileSystemMgr)
+
+ public:
+ NodePtr Create(const Char* path) override;
+ NodePtr CreateAlias(const Char* path) override;
+ NodePtr CreateDirectory(const Char* path) override;
+ NodePtr CreateSwapFile(const Char* path) override;
+
+ public:
+ bool Remove(_Input const Char* path) override;
+ NodePtr Open(_Input const Char* path, _Input const Char* r) override;
+ Void Write(_Input NodePtr node, _Input VoidPtr data, _Input Int32 flags,
+ _Input SizeT sz) override;
+ VoidPtr Read(_Input NodePtr node, _Input Int32 flags, _Input SizeT sz) override;
+ bool Seek(_Input NodePtr node, _Input SizeT off) override;
+ SizeT Tell(_Input NodePtr node) override;
+ bool Rewind(_Input NodePtr node) override;
+
+ Void Write(_Input const Char* name, _Input NodePtr node, _Input VoidPtr data, _Input Int32 flags,
+ _Input SizeT size) override;
+
+ _Output VoidPtr Read(_Input const Char* name, _Input NodePtr node, _Input Int32 flags,
+ _Input SizeT sz) override;
+
+ public:
+ /// @brief Get NeFS parser class.
+ /// @return The filesystem parser class.
+ Ext2FileSystemParser* GetParser() noexcept;
+
+ private:
+ Ext2FileSystemParser* mParser{nullptr};
+};
+
+#endif // ifdef __FSKIT_INCLUDES_EXT2__
+
#ifdef __FSKIT_INCLUDES_HEFS__
/**
* @brief Based of IFilesystemMgr, takes care of managing NeFS