diff options
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/SystemKit/Swap.h | 23 | ||||
| -rw-r--r-- | dev/Kernel/src/System/SwapDiskDelegate.cc | 63 |
2 files changed, 45 insertions, 41 deletions
diff --git a/dev/Kernel/SystemKit/Swap.h b/dev/Kernel/SystemKit/Swap.h index 5d9d1ade..4ba59bcb 100644 --- a/dev/Kernel/SystemKit/Swap.h +++ b/dev/Kernel/SystemKit/Swap.h @@ -8,11 +8,26 @@ #pragma once #include <NewKit/Defines.h> +#include <CompilerKit/CompilerKit.h> -#define kSwapMgrBlockMaxSize mib_cast(16) -#define KSwapMgrBlockMagic "SWEP " - -#define kSwapMgrPageFile "/System/pagefile.sys" +#define kSwapMgrBlockMaxSize (mib_cast(16)) +#define kSwapMgrPageFile "/System/pagefile.sys" /// @file Swap.h /// @brief Virtual memory swap API. + +namespace Kernel +{ + /// @brief This class is a disk swap delegate for any data. available as a syscall too. + 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); + VoidPtr Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len); + }; +} // namespace Kernel
\ No newline at end of file diff --git a/dev/Kernel/src/System/SwapDiskDelegate.cc b/dev/Kernel/src/System/SwapDiskDelegate.cc index ffe8812d..96c1d465 100644 --- a/dev/Kernel/src/System/SwapDiskDelegate.cc +++ b/dev/Kernel/src/System/SwapDiskDelegate.cc @@ -7,51 +7,40 @@ #include <SystemKit/Swap.h> #include <KernelKit/FileMgr.h> -namespace Kernel::Detail +namespace Kernel { - class SwapDiskDelegate; - - class SwapDiskDelegate final + BOOL SwapDiskDelegate::Write(const Char* fork_name, const SizeT fork_name_len, VoidPtr data, const SizeT data_len) { - 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 (!fork_name || !fork_name_len) + return NO; - if (!data) - return NO; + if (data_len > kSwapMgrBlockMaxSize) + return NO; - FileStream file(kSwapMgrPageFile, "wb"); + if (!data) + return NO; - if (file.Write(fork_name, data, data_len).Error()) - { - return NO; - } + FileStream file(kSwapMgrPageFile, "wb"); - return YES; + if (file.Write(fork_name, data, data_len).Error()) + { + return NO; } - VoidPtr Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) - { - if (!fork_name || !fork_name_len) - return nullptr; + return YES; + } - if (data_len > mib_cast(16)) - return nullptr; + VoidPtr SwapDiskDelegate::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return nullptr; - FileStream file(kSwapMgrPageFile, "rb"); + if (data_len > mib_cast(16)) + return nullptr; - voidPtr blob = file.Read(fork_name, data_len); - return blob; - } - }; -} // namespace Kernel::Detail
\ No newline at end of file + FileStream file(kSwapMgrPageFile, "rb"); + + voidPtr blob = file.Read(fork_name, data_len); + return blob; + } +} // namespace Kernel
\ No newline at end of file |
