From dc008570233d0dbfac32eb87367b7e4a08302e32 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 21 Nov 2024 10:19:17 +0100 Subject: META: 10:00 AM bump. --- dev/ZKAKit/FirmwareKit/Handover.h | 14 +++----- dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc | 4 +-- dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc | 4 +-- dev/ZKAKit/NetworkKit/IPC.h | 60 ++++++++++++++++++++------------ dev/ZKAKit/NewKit/Macros.h | 2 +- dev/ZKAKit/amd64-efi.make | 2 +- dev/ZKAKit/src/Network/IPC.cc | 33 ++++++++---------- dev/ZKAKit/src/WS/WS.cc | 7 ++++ dev/ZKAKit/src/WS/WSGL.cc | 7 ++++ 9 files changed, 78 insertions(+), 55 deletions(-) create mode 100644 dev/ZKAKit/src/WS/WS.cc create mode 100644 dev/ZKAKit/src/WS/WSGL.cc (limited to 'dev/ZKAKit') diff --git a/dev/ZKAKit/FirmwareKit/Handover.h b/dev/ZKAKit/FirmwareKit/Handover.h index fdd69412..2ce7d8a6 100644 --- a/dev/ZKAKit/FirmwareKit/Handover.h +++ b/dev/ZKAKit/FirmwareKit/Handover.h @@ -24,11 +24,7 @@ /* Initial bitmap pointer location and size. */ #define kHandoverBitMapSz (gib_cast(4)) - -/* Executable base */ -#define kHandoverExecBase (0x4000000) - -#define kHandoverStructSz sizeof(HEL::HANDOVER_INFO_HEADER) +#define kHandoverStructSz sizeof(HEL::BootInfoHeader) namespace Kernel::HEL { @@ -56,7 +52,7 @@ namespace Kernel::HEL kArchCount = 3, }; - struct HANDOVER_INFO_HEADER final + struct BootInfoHeader final { UInt64 f_Magic; UInt64 f_Version; @@ -109,8 +105,8 @@ namespace Kernel::HEL }; /// @brief Alias of bootloader main type. - typedef void (*HandoverProc)(HANDOVER_INFO_HEADER* handoverInfo); + typedef void (*HandoverProc)(BootInfoHeader* boot_info); } // namespace Kernel::HEL -/// @brief Bootloader global header. -inline Kernel::HEL::HANDOVER_INFO_HEADER* kHandoverHeader = nullptr; +/// @brief Bootloader information header global variable. +inline Kernel::HEL::BootInfoHeader* kHandoverHeader = nullptr; diff --git a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc index 79dbf4ad..086dd32f 100644 --- a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc +++ b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc @@ -31,9 +31,9 @@ STATIC Kernel::Void hal_init_cxx_ctors() /// @brief Kernel init procedure. EXTERN_C void hal_init_platform( - Kernel::HEL::HANDOVER_INFO_HEADER* HandoverHeader) + Kernel::HEL::BootInfoHeader* handover_hdr) { - kHandoverHeader = HandoverHeader; + kHandoverHeader = handover_hdr; if (kHandoverHeader->f_Magic != kHandoverMagic && kHandoverHeader->f_Version != kHandoverVersion) diff --git a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc index 58c7c553..dae19adb 100644 --- a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc +++ b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc @@ -21,14 +21,14 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept; EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void); EXTERN_C void hal_init_platform( - Kernel::HEL::HANDOVER_INFO_HEADER* HandoverHeader) + Kernel::HEL::BootInfoHeader* handover_hdr) { /************************************************** */ /* INITIALIZE AND VALIDATE HEADER. */ /************************************************** */ - kHandoverHeader = HandoverHeader; + kHandoverHeader = handover_hdr; if (kHandoverHeader->f_Magic != kHandoverMagic && kHandoverHeader->f_Version != kHandoverVersion) diff --git a/dev/ZKAKit/NetworkKit/IPC.h b/dev/ZKAKit/NetworkKit/IPC.h index 05748e3a..991e3fcd 100644 --- a/dev/ZKAKit/NetworkKit/IPC.h +++ b/dev/ZKAKit/NetworkKit/IPC.h @@ -7,8 +7,8 @@ ------------------------------------------- */ -#ifndef _INC_IPC_ENDPOINT_H_ -#define _INC_IPC_ENDPOINT_H_ +#ifndef INC_IPC_H +#define INC_IPC_H #include #include @@ -16,23 +16,23 @@ #include /// @file IPC.h -/// @brief IPC EP protocol. +/// @brief IPC comm. protocol. /// IA separator. -#define cXPCOMRemoteSeparator ":" +#define kIPCRemoteSeparator ":" /// Interchange address, consists of PID:TEAM. -#define cXPCOMRemoteInvalid "00:00" +#define kIPCRemoteInvalid "00:00" -#define cXPCOMHeaderMagic (0x4950434) +#define kIPCHeaderMagic (0x4950434) namespace Kernel { - struct IPC_ADDRESS_STRUCT; - struct IPC_MESSAGE_STRUCT; + struct IPCAddress; + struct IPCMessage; /// @brief 128-bit IPC address. - struct PACKED IPC_ADDRESS_STRUCT final + struct PACKED IPCAddress final { UInt64 UserProcessID; UInt64 UserProcessTeam; @@ -41,30 +41,30 @@ namespace Kernel // some operators. //////////////////////////////////// - bool operator==(const IPC_ADDRESS_STRUCT& addr) noexcept + bool operator==(const IPCAddress& addr) noexcept { return addr.UserProcessID == this->UserProcessID && addr.UserProcessTeam == this->UserProcessTeam; } - bool operator==(IPC_ADDRESS_STRUCT& addr) noexcept + bool operator==(IPCAddress& addr) noexcept { return addr.UserProcessID == this->UserProcessID && addr.UserProcessTeam == this->UserProcessTeam; } }; - typedef struct IPC_ADDRESS_STRUCT IPCEPAddressKind; + typedef struct IPCAddress IPCEPAddressKind; enum { - eIPCEPLittleEndian = 0, - eIPCEPBigEndian = 1, - eIPCEPMixedEndian = 2, + kIPCLittleEndian = 0, + kIPCBigEndian = 1, + kIPCMixedEndian = 2, }; - constexpr auto cXPCOMMsgSize = 6094U; + constexpr inline auto kIPCMsgSize = 6094U; /// @brief IPC connection header, message cannot be greater than 6K. - typedef struct IPC_MESSAGE_STRUCT final + typedef struct IPCMessage final { UInt32 IpcHeaderMagic; // cRemoteHeaderMagic UInt8 IpcEndianess; // 0 : LE, 1 : BE @@ -74,18 +74,34 @@ namespace Kernel UInt32 IpcCRC32; UInt32 IpcMsg; UInt32 IpcMsgSz; - UInt8 IpcData[cXPCOMMsgSize]; - } PACKED IPC_MESSAGE_STRUCT; + UInt8 IpcData[kIPCMsgSize]; + + /// @brief Passes the message to target, could be anything, HTTP packet, JSON or whatever. + Bool Pass(IPCMessage* target) noexcept + { + if (target && target->IpcFrom == this->IpcTo) + { + if (this->IpcMsgSz > target->IpcMsgSz) + return No; + + rt_copy_memory(this->IpcData, target->IpcData, this->IpcMsgSz); + + return Yes; + } + + return No; + } + } PACKED IPCMessage; /// @brief Sanitize packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. - Bool ipc_sanitize_packet(_Input IPC_MESSAGE_STRUCT* pckt_in); + Bool ipc_sanitize_packet(_Input IPCMessage* pckt_in); /// @brief Construct packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. - Bool ipc_construct_packet(_Output IPC_MESSAGE_STRUCT** pckt_in); + Bool ipc_construct_packet(_Output _Input IPCMessage** pckt_in); } // namespace Kernel -#endif // _INC_IPC_ENDPOINT_H_ +#endif // INC_IPC_H diff --git a/dev/ZKAKit/NewKit/Macros.h b/dev/ZKAKit/NewKit/Macros.h index 2bc53491..93cf0acc 100644 --- a/dev/ZKAKit/NewKit/Macros.h +++ b/dev/ZKAKit/NewKit/Macros.h @@ -140,7 +140,7 @@ /// @brief The main system loader. #define kUserName "ZKA AUTHORITY/KERNEL" -#define DEDUCE_ENDIAN(address, value) \ +#define rtl_deduce_endianess(address, value) \ (((reinterpret_cast(address)[0]) == (value)) \ ? (Kernel::Endian::kEndianBig) \ : (Kernel::Endian::kEndianLittle)) diff --git a/dev/ZKAKit/amd64-efi.make b/dev/ZKAKit/amd64-efi.make index ea3272fa..854a6848 100644 --- a/dev/ZKAKit/amd64-efi.make +++ b/dev/ZKAKit/amd64-efi.make @@ -55,7 +55,7 @@ newos-amd64-epm: clean $(CC) $(CCFLAGS) $(DISK_DRV) $(DEBUG_MACRO) $(wildcard src/*.cc) \ $(wildcard src/FS/*.cc) $(wildcard HALKit/AMD64/Storage/*.cc) \ $(wildcard HALKit/AMD64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) \ - $(wildcard HALKit/AMD64/*.cc) $(wildcard HALKit/AMD64/*.cpp) \ + $(wildcard HALKit/AMD64/*.cc) $(wildcard src/WS/*.cc) \ $(wildcard HALKit/AMD64/*.s) $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalBoot.asm diff --git a/dev/ZKAKit/src/Network/IPC.cc b/dev/ZKAKit/src/Network/IPC.cc index b94ab5dc..ee95d23e 100644 --- a/dev/ZKAKit/src/Network/IPC.cc +++ b/dev/ZKAKit/src/Network/IPC.cc @@ -12,26 +12,26 @@ using namespace Kernel; /// @internal /// @brief The internal sanitize function. -Bool ipc_int_sanitize_packet(IPC_MESSAGE_STRUCT* pckt) +Bool ipc_int_sanitize_packet(IPCMessage* pckt) { - auto endian = DEDUCE_ENDIAN(pckt, ((Char*)pckt)[0]); + auto endian = rtl_deduce_endianess(pckt, ((Char*)pckt)[0]); switch (endian) { case Endian::kEndianBig: { - if (pckt->IpcEndianess == eIPCEPLittleEndian) + if (pckt->IpcEndianess == kIPCLittleEndian) goto ipc_check_failed; break; } case Endian::kEndianLittle: { - if (pckt->IpcEndianess == eIPCEPBigEndian) + if (pckt->IpcEndianess == kIPCBigEndian) goto ipc_check_failed; break; } case Endian::kEndianMixed: { - if (pckt->IpcEndianess == eIPCEPMixedEndian) + if (pckt->IpcEndianess == kIPCMixedEndian) goto ipc_check_failed; break; @@ -41,12 +41,12 @@ Bool ipc_int_sanitize_packet(IPC_MESSAGE_STRUCT* pckt) } if (pckt->IpcFrom == pckt->IpcTo || - pckt->IpcPacketSize > cXPCOMMsgSize) + pckt->IpcPacketSize > kIPCMsgSize) { goto ipc_check_failed; } - return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == cXPCOMHeaderMagic; + return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic; ipc_check_failed: ErrLocal() = kErrorIPC; @@ -58,7 +58,7 @@ namespace Kernel /// @brief Sanitize packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. - Bool ipc_sanitize_packet(IPC_MESSAGE_STRUCT* pckt) + Bool ipc_sanitize_packet(IPCMessage* pckt) { if (!pckt || !ipc_int_sanitize_packet(pckt)) @@ -73,7 +73,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 IPC_MESSAGE_STRUCT** pckt_in) + Bool ipc_construct_packet(_Output IPCMessage** pckt_in) { // don't do anything if it's valid already. if (*pckt_in) @@ -86,18 +86,16 @@ namespace Kernel return false; } - *pckt_in = new IPC_MESSAGE_STRUCT(); - - MUST_PASS((*pckt_in)); + *pckt_in = new IPCMessage(); if (*pckt_in) { - auto endian = DEDUCE_ENDIAN((*pckt_in), ((Char*)(*pckt_in))[0]); + auto endian = rtl_deduce_endianess((*pckt_in), ((Char*)(*pckt_in))[0]); - (*pckt_in)->IpcHeaderMagic = cXPCOMHeaderMagic; + (*pckt_in)->IpcHeaderMagic = kIPCHeaderMagic; (*pckt_in)->IpcEndianess = static_cast(endian); - (*pckt_in)->IpcPacketSize = sizeof(IPC_MESSAGE_STRUCT); + (*pckt_in)->IpcPacketSize = sizeof(IPCMessage); (*pckt_in)->IpcTo.UserProcessID = 0; (*pckt_in)->IpcTo.UserProcessTeam = 0; @@ -105,10 +103,9 @@ namespace Kernel (*pckt_in)->IpcFrom.UserProcessID = Kernel::UserProcessScheduler::The().GetCurrentProcess().Leak().ProcessId; (*pckt_in)->IpcFrom.UserProcessTeam = Kernel::UserProcessScheduler::The().CurrentTeam().mTeamId; - return true; + return Yes; } - UserProcessScheduler::The().GetCurrentProcess().Leak().Crash(); - return false; + return No; } } // namespace Kernel diff --git a/dev/ZKAKit/src/WS/WS.cc b/dev/ZKAKit/src/WS/WS.cc new file mode 100644 index 00000000..e7e1b043 --- /dev/null +++ b/dev/ZKAKit/src/WS/WS.cc @@ -0,0 +1,7 @@ +/* ------------------------------------------- + + Copyright (C) 2024, EL Mahrouss Logic, all rights reserved. + +------------------------------------------- */ + +#include \ No newline at end of file diff --git a/dev/ZKAKit/src/WS/WSGL.cc b/dev/ZKAKit/src/WS/WSGL.cc new file mode 100644 index 00000000..19715d09 --- /dev/null +++ b/dev/ZKAKit/src/WS/WSGL.cc @@ -0,0 +1,7 @@ +/* ------------------------------------------- + + Copyright (C) 2024, EL Mahrouss Logic, all rights reserved. + +------------------------------------------- */ + +#include \ No newline at end of file -- cgit v1.2.3