From efd60f780ba66b363dc564b99a09b60163b9edcb Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Sat, 22 Jun 2024 11:02:34 +0200 Subject: IMP: Support fork based operations inside the file manager, update PEF loader to load from forks, we might need a non-fork loader class though. Signed-off-by: Amlal EL Mahrouss --- Kernel/Sources/FileManager.cxx | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'Kernel/Sources/FileManager.cxx') diff --git a/Kernel/Sources/FileManager.cxx b/Kernel/Sources/FileManager.cxx index ee285ae1..9f81c260 100644 --- a/Kernel/Sources/FileManager.cxx +++ b/Kernel/Sources/FileManager.cxx @@ -80,6 +80,26 @@ namespace NewOS /// @param flags the size. /// @return Void NewFilesystemManager::Write(NodePtr node, VoidPtr data, Int32 flags, SizeT size) + { + auto dataForkName = kNewFSDataFork; + this->Write(dataForkName, node, data, flags, size); + } + + /// @brief Read from filesystem fork. + /// @param node the catalog node. + /// @param flags the flags with it. + /// @param sz the size to read. + /// @return + VoidPtr NewFilesystemManager::Read(NodePtr node, Int32 flags, SizeT sz) + { + auto dataForkName = kNewFSDataFork; + return this->Read(dataForkName, node, flags, sz); + } + + Void NewFilesystemManager::Write(_Input const Char* name, + _Input NodePtr node, _Input VoidPtr data, + _Input Int32 flags, + _Input SizeT size) { if (!size || size > kNewFSForkSize) @@ -90,19 +110,15 @@ namespace NewOS NEWOS_UNUSED(flags); - auto dataForkName = kNewFSDataFork; - if ((reinterpret_cast(node))->Kind == kNewFSCatalogKindFile) fImpl->WriteCatalog(reinterpret_cast(node), data, size, - dataForkName); + name); } - /// @brief Read from filesystem fork. - /// @param node the catalog node. - /// @param flags the flags with it. - /// @param sz the size to read. - /// @return - VoidPtr NewFilesystemManager::Read(NodePtr node, Int32 flags, SizeT sz) + _Output VoidPtr NewFilesystemManager::Read(_Input const Char* name, + _Input NodePtr node, + _Input Int32 flags, + _Input SizeT sz) { if (sz > kNewFSForkSize) return nullptr; @@ -112,11 +128,9 @@ namespace NewOS NEWOS_UNUSED(flags); - auto dataForkName = kNewFSDataFork; - if ((reinterpret_cast(node))->Kind == kNewFSCatalogKindFile) return fImpl->ReadCatalog(reinterpret_cast(node), sz, - dataForkName); + name); return nullptr; } -- cgit v1.2.3