From 3d8a7b189d3deaaaab948fdb71ed7fedcc16e05c Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 19 Oct 2025 18:08:04 +0200 Subject: feat: kernel: NetworkKit improvements and signal system refactors. Signed-off-by: Amlal El Mahrouss --- dev/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc | 2 +- dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc | 2 +- dev/kernel/NetworkKit/IPC.h | 19 ++++---- dev/kernel/NetworkKit/MAC.h | 2 +- dev/kernel/SignalKit/SignalGen.h | 51 ---------------------- dev/kernel/SignalKit/Signals.h | 51 ++++++++++++++++++++++ dev/kernel/src/UserProcessScheduler.cc | 2 +- 7 files changed, 63 insertions(+), 66 deletions(-) delete mode 100644 dev/kernel/SignalKit/SignalGen.h create mode 100644 dev/kernel/SignalKit/Signals.h (limited to 'dev/kernel') diff --git a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc index 7408639c..0cb991f9 100644 --- a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc +++ b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc @@ -8,7 +8,7 @@ #include #include #include -#include +#include EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip); diff --git a/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc b/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc index dd875c63..0c26f4cb 100644 --- a/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc +++ b/dev/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc @@ -8,7 +8,7 @@ #include #include #include -#include +#include EXTERN_C Kernel::Void int_handle_breakpoint(Kernel::UIntPtr rip); EXTERN_C BOOL mp_handle_gic_interrupt_el0(Void); diff --git a/dev/kernel/NetworkKit/IPC.h b/dev/kernel/NetworkKit/IPC.h index 223a112b..c65ec6fb 100644 --- a/dev/kernel/NetworkKit/IPC.h +++ b/dev/kernel/NetworkKit/IPC.h @@ -38,13 +38,10 @@ struct PACKED IPC_ADDR final { // some operators. //////////////////////////////////// - bool operator==(const IPC_ADDR& addr) noexcept; - - bool operator==(IPC_ADDR& addr) noexcept; - - bool operator!=(const IPC_ADDR& addr) noexcept; - - bool operator!=(IPC_ADDR& addr) noexcept; + BOOL operator==(const IPC_ADDR& addr) noexcept; + BOOL operator==(IPC_ADDR& addr) noexcept; + BOOL operator!=(const IPC_ADDR& addr) noexcept; + BOOL operator!=(IPC_ADDR& addr) noexcept; }; typedef struct IPC_ADDR IPC_ADDR; @@ -58,7 +55,7 @@ enum { constexpr inline auto kIPCMsgSize = 6094U; enum { - kIPCLockInvalid, + kIPCLockInvalid = 0, kIPCLockFree = 1, kIPCLockUsed = 2, }; @@ -77,17 +74,17 @@ typedef struct IPC_MSG final { UInt32 IpcLock; /// @brief Passes the message to target, could be anything, HTTP packet, JSON or whatever. static Bool Pass(IPC_MSG* self, IPC_MSG* target) noexcept; -} PACKED IPC_MSG; +} PACKED ALIGN(8) IPC_MSG; /// @brief Sanitize packet function /// @retval true packet is correct. /// @retval false packet is incorrect and process has crashed. -Bool ipc_sanitize_packet(_Input IPC_MSG* pckt_in); +BOOL ipc_sanitize_packet(_Input IPC_MSG* 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 _Input IPC_MSG** pckt_in); +BOOL ipc_construct_packet(_Output _Input IPC_MSG** pckt_in); } // namespace Kernel #endif // INC_IPC_H diff --git a/dev/kernel/NetworkKit/MAC.h b/dev/kernel/NetworkKit/MAC.h index 805f7259..9cfd93c2 100644 --- a/dev/kernel/NetworkKit/MAC.h +++ b/dev/kernel/NetworkKit/MAC.h @@ -10,7 +10,7 @@ #include #include -#define kMACAddrLen (32) +#define kMACAddrLen (32U) namespace Kernel { class MacAddressGetter; diff --git a/dev/kernel/SignalKit/SignalGen.h b/dev/kernel/SignalKit/SignalGen.h deleted file mode 100644 index fdc27161..00000000 --- a/dev/kernel/SignalKit/SignalGen.h +++ /dev/null @@ -1,51 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. - -------------------------------------------- */ - -#pragma once - -#include - -#define SIGKILL 1 /* kill */ -#define SIGPAUS 2 /* pause */ -#define SIGEXEC 3 /* execute */ -#define SIGTRAP 4 /* trap */ -#define SIGABRT 5 /* abort */ -#define SIGCONT 6 /* continue */ -#define SIGSEG 7 /* process fault */ -#define SIGBREK 8 -#define SIGATCH 9 -#define SIGDTCH 10 - -/// @author Amlal El Mahrouss -/// @brief Signal Generation API. - -namespace Kernel { -typedef SizeT rt_signal_kind; - -/// @brief Standard signal seed for general purpose usage. -inline constexpr auto kUserSignalSeed = 0x0895034fUL; - -/// @brief Special signal seed for kernel usage. -inline constexpr auto kKernelSignalSeed = 0x0895034f9fUL; - -/// @brief Generate signal from **Sig** -template -inline rt_signal_kind sig_generate_unique() { - static_assert(Sig > 0, "Signal is zero (invalid)"); - return Sig ^ Seed; -} - -/// @brief Checks if the signal matches the seed (user_seed or kernel_seed) -template -inline BOOL sig_matches_seed(rt_signal_kind sig) { - return (sig & 0xFF000000) == (Seed & 0xFF000000); -} - -/// @brief Validate signal from **sig** -inline BOOL sig_validate_unique(rt_signal_kind sig) { - return sig > 0; -} -} // namespace Kernel diff --git a/dev/kernel/SignalKit/Signals.h b/dev/kernel/SignalKit/Signals.h new file mode 100644 index 00000000..fdc27161 --- /dev/null +++ b/dev/kernel/SignalKit/Signals.h @@ -0,0 +1,51 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include + +#define SIGKILL 1 /* kill */ +#define SIGPAUS 2 /* pause */ +#define SIGEXEC 3 /* execute */ +#define SIGTRAP 4 /* trap */ +#define SIGABRT 5 /* abort */ +#define SIGCONT 6 /* continue */ +#define SIGSEG 7 /* process fault */ +#define SIGBREK 8 +#define SIGATCH 9 +#define SIGDTCH 10 + +/// @author Amlal El Mahrouss +/// @brief Signal Generation API. + +namespace Kernel { +typedef SizeT rt_signal_kind; + +/// @brief Standard signal seed for general purpose usage. +inline constexpr auto kUserSignalSeed = 0x0895034fUL; + +/// @brief Special signal seed for kernel usage. +inline constexpr auto kKernelSignalSeed = 0x0895034f9fUL; + +/// @brief Generate signal from **Sig** +template +inline rt_signal_kind sig_generate_unique() { + static_assert(Sig > 0, "Signal is zero (invalid)"); + return Sig ^ Seed; +} + +/// @brief Checks if the signal matches the seed (user_seed or kernel_seed) +template +inline BOOL sig_matches_seed(rt_signal_kind sig) { + return (sig & 0xFF000000) == (Seed & 0xFF000000); +} + +/// @brief Validate signal from **sig** +inline BOOL sig_validate_unique(rt_signal_kind sig) { + return sig > 0; +} +} // namespace Kernel diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index af54799e..2306d3e4 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -21,7 +21,7 @@ #include #include #include -#include +#include ///! BUGS: 0 -- cgit v1.2.3