diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-01 08:43:46 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-09-01 08:43:46 +0200 |
| commit | 12fe96873ad4a2f1d3c7c3d9f84bc8eb367fb2f0 (patch) | |
| tree | 77722e773fb1b7f7b55a879c34863834ba6be8e5 /dev/kernel | |
| parent | 257b0a377e0e0f226623e7aa807780051a9cc9e6 (diff) | |
feat: Signal System improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel')
| -rw-r--r-- | dev/kernel/SignalKit/SignalGen.h | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/dev/kernel/SignalKit/SignalGen.h b/dev/kernel/SignalKit/SignalGen.h index e1684acb..ad127830 100644 --- a/dev/kernel/SignalKit/SignalGen.h +++ b/dev/kernel/SignalKit/SignalGen.h @@ -8,36 +8,45 @@ #include <NeKit/Defines.h> -#define SIGKILL 1 -#define SIGPAUS 2 -#define SIGEXEC 3 -#define SIGTRAP 4 -#define SIGABRT 5 -#define SIGCONT 6 -#define SIGSEG 7 - -#define SIGBREK 660 -#define SIGATCH 661 -#define SIGDTCH 662 +#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 UInt32 rt_signal_kind; +typedef SizeT rt_signal_kind; /// @brief Standard signal seed for general purpose usage. -inline static constexpr auto kBasicSignalSeed = 0x0895034f; +inline static constexpr auto kUserSignalSeed = 0x0895034fUL; + +/// @brief Special signal seed for kernel usage. +inline static constexpr auto kKernelSignalSeed = 0x0895034f9fUL; /// @brief Generate signal from **Sig** -template <rt_signal_kind Sig, SizeT Seed = kBasicSignalSeed> +template <rt_signal_kind Sig, SizeT Seed = kKernelSignalSeed> 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 <typename Seed> +inline BOOL sig_matches_seed(const rt_signal_kind& sig) { + static_assert(sig > 0, "Signal is zero (invalid)"); + return (sig & Seed) > 0; +} + /// @brief Validate signal from **sig** -constexpr BOOL sig_validate_unique(rt_signal_kind sig) { +inline BOOL sig_validate_unique(rt_signal_kind sig) { return sig > 0; } } // namespace Kernel |
