diff options
Diffstat (limited to 'dev/Kernel/src')
| -rw-r--r-- | dev/Kernel/src/KernelPanic.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/Mgr/SwapMgr.cc | 28 | ||||
| -rw-r--r-- | dev/Kernel/src/Network/IPAddr.cc (renamed from dev/Kernel/src/Network/IP.cc) | 7 | ||||
| -rw-r--r-- | dev/Kernel/src/Network/IPCAddr.cc | 0 | ||||
| -rw-r--r-- | dev/Kernel/src/Network/IPCMsg.cc (renamed from dev/Kernel/src/Network/IPC.cc) | 80 | ||||
| -rw-r--r-- | dev/Kernel/src/PEFCodeMgr.cc | 4 |
6 files changed, 74 insertions, 47 deletions
diff --git a/dev/Kernel/src/KernelPanic.cc b/dev/Kernel/src/KernelPanic.cc index 9b200336..f26925c5 100644 --- a/dev/Kernel/src/KernelPanic.cc +++ b/dev/Kernel/src/KernelPanic.cc @@ -14,8 +14,6 @@ #include <Mod/GfxMgr/FBMgr.h> #include <Mod/GfxMgr/TextMgr.h> -#define kWebsiteURL "https://el-mahrouss-logic.com/products/help/" - /* Each error code is attributed with an ID, which will prompt a string onto the * screen. Wait for debugger... */ diff --git a/dev/Kernel/src/Mgr/SwapMgr.cc b/dev/Kernel/src/Mgr/SwapMgr.cc new file mode 100644 index 00000000..47e20982 --- /dev/null +++ b/dev/Kernel/src/Mgr/SwapMgr.cc @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright (C) 2024, Theater Quality Inc, all rights reserved. + +------------------------------------------- */ + +#include <SystemKit/SwapMgr.h> +#include <KernelKit/FileMgr.h> + +namespace Kernel +{ + class SwapMgrDiskMgr; + + class SwapMgrDiskMgr final + { + static BOOL DumpToDisk(const Char* fork_name, const SizeT fork_name_len, VoidPtr data, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return NO; + + FileStream file(kSwapMgrPageFile, "wb"); + + file.Write(fork_name, data, data_len); + + return YES; + } + } +}
\ No newline at end of file diff --git a/dev/Kernel/src/Network/IP.cc b/dev/Kernel/src/Network/IPAddr.cc index 2a07bc62..f8e3e903 100644 --- a/dev/Kernel/src/Network/IP.cc +++ b/dev/Kernel/src/Network/IPAddr.cc @@ -104,9 +104,12 @@ namespace Kernel bool IPFactory::IpCheckVersion4(const Char* ip) { - int cnter = 0; + if (!ip) + return NO; - for (Size base = 0; base < rt_string_len(ip); ++base) + Int32 cnter = 0; + + for (SizeT base = 0; base < rt_string_len(ip); ++base) { if (ip[base] == '.') { diff --git a/dev/Kernel/src/Network/IPCAddr.cc b/dev/Kernel/src/Network/IPCAddr.cc new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/dev/Kernel/src/Network/IPCAddr.cc diff --git a/dev/Kernel/src/Network/IPC.cc b/dev/Kernel/src/Network/IPCMsg.cc index 44b4665c..c93f7e7a 100644 --- a/dev/Kernel/src/Network/IPC.cc +++ b/dev/Kernel/src/Network/IPCMsg.cc @@ -8,57 +8,55 @@ #include <KernelKit/LPC.h> #include <KernelKit/UserProcessScheduler.h> -using namespace Kernel; - -/// @internal -/// @brief The internal sanitize function. -Bool ipc_int_sanitize_packet(IPCMessage* pckt) +namespace Kernel { - auto endian = rtl_deduce_endianess(pckt, ((Char*)pckt)[0]); - - switch (endian) + /// @internal + /// @brief The internal sanitize function. + Bool ipc_int_sanitize_packet(IPC_MSG* pckt) { - case Endian::kEndianBig: { - if (pckt->IpcEndianess == kIPCLittleEndian) - goto ipc_check_failed; + auto endian = rtl_deduce_endianess(pckt, ((Char*)pckt)[0]); - break; - } - case Endian::kEndianLittle: { - if (pckt->IpcEndianess == kIPCBigEndian) + switch (endian) + { + case Endian::kEndianBig: { + if (pckt->IpcEndianess == kIPCLittleEndian) + goto ipc_check_failed; + + break; + } + case Endian::kEndianLittle: { + if (pckt->IpcEndianess == kIPCBigEndian) + goto ipc_check_failed; + + break; + } + case Endian::kEndianMixed: { + if (pckt->IpcEndianess == kIPCMixedEndian) + goto ipc_check_failed; + + break; + } + default: goto ipc_check_failed; + } - break; - } - case Endian::kEndianMixed: { - if (pckt->IpcEndianess == kIPCMixedEndian) + if (pckt->IpcFrom == pckt->IpcTo || + pckt->IpcPacketSize > kIPCMsgSize) + { goto ipc_check_failed; + } - break; - } - default: - goto ipc_check_failed; - } + return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic; - if (pckt->IpcFrom == pckt->IpcTo || - pckt->IpcPacketSize > kIPCMsgSize) - { - goto ipc_check_failed; + ipc_check_failed: + err_local_get() = kErrorIPC; + return false; } - return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic; - -ipc_check_failed: - err_local_get() = kErrorIPC; - return false; -} - -namespace Kernel -{ /// @brief Sanitize packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. - Bool ipc_sanitize_packet(IPCMessage* pckt) + Bool ipc_sanitize_packet(IPC_MSG* pckt) { if (!pckt || !ipc_int_sanitize_packet(pckt)) @@ -73,7 +71,7 @@ namespace Kernel /// @brief Construct packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. - Bool ipc_construct_packet(_Output IPCMessage** pckt_in) + Bool ipc_construct_packet(_Output IPC_MSG** pckt_in) { // don't act if it's not even valid. if (!pckt_in) @@ -90,7 +88,7 @@ namespace Kernel return false; } - *pckt_in = new IPCMessage(); + *pckt_in = new IPC_MSG(); if (*pckt_in) { @@ -99,7 +97,7 @@ namespace Kernel (*pckt_in)->IpcHeaderMagic = kIPCHeaderMagic; (*pckt_in)->IpcEndianess = static_cast<UInt8>(endian); - (*pckt_in)->IpcPacketSize = sizeof(IPCMessage); + (*pckt_in)->IpcPacketSize = sizeof(IPC_MSG); (*pckt_in)->IpcTo.UserProcessID = 0; (*pckt_in)->IpcTo.UserProcessTeam = 0; diff --git a/dev/Kernel/src/PEFCodeMgr.cc b/dev/Kernel/src/PEFCodeMgr.cc index a8205004..c78dac01 100644 --- a/dev/Kernel/src/PEFCodeMgr.cc +++ b/dev/Kernel/src/PEFCodeMgr.cc @@ -66,7 +66,7 @@ namespace Kernel auto kPefHeader = "PEF_CONTAINER"; - fCachedBlob = fFile->Read(kPefHeader); + fCachedBlob = fFile->Read(kPefHeader, mib_cast(16)); PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob); @@ -123,7 +123,7 @@ namespace Kernel PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob); - auto blob = fFile->Read(name); + auto blob = fFile->Read(name, mib_cast(16)); PEFCommandHeader* container_header = reinterpret_cast<PEFCommandHeader*>(blob); |
