From 8b7216aaf2dacad7ce67d734d07b047fed8ec01e Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 29 Dec 2024 09:57:48 +0100 Subject: IMPL: NeFS: Add file lock feature and validation for it. - It is added to hide files from indexing. - And will be used to hide system files. IMPL: Swap: Add SwapDiskDelegate class, will also work on a swap packet structure. Signed-off-by: Amlal El Mahrouss --- dev/Kernel/src/System/SwapDiskDelegate.cc | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 dev/Kernel/src/System/SwapDiskDelegate.cc (limited to 'dev/Kernel/src/System') diff --git a/dev/Kernel/src/System/SwapDiskDelegate.cc b/dev/Kernel/src/System/SwapDiskDelegate.cc new file mode 100644 index 00000000..ffe8812d --- /dev/null +++ b/dev/Kernel/src/System/SwapDiskDelegate.cc @@ -0,0 +1,57 @@ +/* ------------------------------------------- + + Copyright (C) 2024, Theater Quality Corp, all rights reserved. + +------------------------------------------- */ + +#include +#include + +namespace Kernel::Detail +{ + class SwapDiskDelegate; + + class SwapDiskDelegate final + { + public: + explicit SwapDiskDelegate() = default; + ~SwapDiskDelegate() = default; + + ZKA_COPY_DEFAULT(SwapDiskDelegate); + + BOOL Write(const Char* fork_name, const SizeT fork_name_len, VoidPtr data, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return NO; + + if (data_len > mib_cast(16)) + return NO; + + if (!data) + return NO; + + FileStream file(kSwapMgrPageFile, "wb"); + + if (file.Write(fork_name, data, data_len).Error()) + { + return NO; + } + + return YES; + } + + VoidPtr Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return nullptr; + + if (data_len > mib_cast(16)) + return nullptr; + + FileStream file(kSwapMgrPageFile, "rb"); + + voidPtr blob = file.Read(fork_name, data_len); + return blob; + } + }; +} // namespace Kernel::Detail \ No newline at end of file -- cgit v1.2.3