From 974d5eae785025facb2c0037c4ec3aaca1da7b20 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 19 Oct 2025 20:06:33 +0200 Subject: feat: kernel: disk_swap and network improvements. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/AsciiUtils.cc | 3 +++ dev/kernel/src/Network/NetworkDevice.cc | 2 +- dev/kernel/src/Swap/DiskSwap.cc | 6 +++++- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'dev/kernel/src') diff --git a/dev/kernel/src/AsciiUtils.cc b/dev/kernel/src/AsciiUtils.cc index cca3a368..8d2f9dc5 100644 --- a/dev/kernel/src/AsciiUtils.cc +++ b/dev/kernel/src/AsciiUtils.cc @@ -52,9 +52,12 @@ Int32 rt_copy_memory_safe(const voidPtr src, voidPtr dst, Size len, Size dst_siz } return -1; } + auto s = reinterpret_cast(src); auto d = reinterpret_cast(dst); + for (Size i = 0; i < len; ++i) d[i] = s[i]; + return static_cast(len); } diff --git a/dev/kernel/src/Network/NetworkDevice.cc b/dev/kernel/src/Network/NetworkDevice.cc index 7f93fa1b..ffdfa53b 100644 --- a/dev/kernel/src/Network/NetworkDevice.cc +++ b/dev/kernel/src/Network/NetworkDevice.cc @@ -11,7 +11,7 @@ namespace Kernel { /// \brief Getter for fNetworkName. /// \return Network device name. const Char* NetworkDevice::Name() const { - return "/devices/net{}"; + return "/devices/net/net{}"; } /// \brief Setter for fNetworkName. diff --git a/dev/kernel/src/Swap/DiskSwap.cc b/dev/kernel/src/Swap/DiskSwap.cc index 8578450c..b9cfaf77 100644 --- a/dev/kernel/src/Swap/DiskSwap.cc +++ b/dev/kernel/src/Swap/DiskSwap.cc @@ -8,6 +8,8 @@ #include namespace Kernel { +static constexpr UInt32 kSwapDiskHeaderMagic = 0x44535750; // 'DSWP' + /***********************************************************************************/ /// @brief Write memory chunk onto disk. /// @param fork_name The swap name to recognize this memory region. @@ -20,7 +22,7 @@ BOOL DiskSwapInterface::Write(const Char* fork_name, SizeT fork_name_len, SWAP_D if (*fork_name == 0) return NO; - if (!data) return NO; + if (!data || data->fMagic != kSwapDiskHeaderMagic) return NO; FileStream file(kSwapPageFilePath, kRestrictWRB); @@ -52,6 +54,8 @@ SWAP_DISK_HEADER* DiskSwapInterface::Read(const Char* fork_name, SizeT fork_name VoidPtr blob = file.Read(fork_name, sizeof(SWAP_DISK_HEADER) + data_len); + if (!blob || ((SWAP_DISK_HEADER*)blob)->fMagic != kSwapDiskHeaderMagic) return nullptr; + return reinterpret_cast(blob); } } // namespace Kernel -- cgit v1.2.3