summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-21 10:19:17 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-21 10:19:17 +0100
commitdc008570233d0dbfac32eb87367b7e4a08302e32 (patch)
tree37e3282f17e41297f35d0de9b8248120e3a4e855 /dev/ZKAKit
parent6ed8a39c1bd3083297b41e981a2bf4bdbe2abd1f (diff)
META: 10:00 AM bump.
Diffstat (limited to 'dev/ZKAKit')
-rw-r--r--dev/ZKAKit/FirmwareKit/Handover.h14
-rw-r--r--dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc4
-rw-r--r--dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc4
-rw-r--r--dev/ZKAKit/NetworkKit/IPC.h60
-rw-r--r--dev/ZKAKit/NewKit/Macros.h2
-rw-r--r--dev/ZKAKit/amd64-efi.make2
-rw-r--r--dev/ZKAKit/src/Network/IPC.cc33
-rw-r--r--dev/ZKAKit/src/WS/WS.cc7
-rw-r--r--dev/ZKAKit/src/WS/WSGL.cc7
9 files changed, 78 insertions, 55 deletions
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 <NewKit/Defines.h>
#include <NewKit/KString.h>
@@ -16,23 +16,23 @@
#include <CompressKit/RLE.h>
/// @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<Kernel::Char*>(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<UInt8>(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 <Modules/FB/WS.h> \ 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 <Modules/WSGL/WSGL.h> \ No newline at end of file