summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/SignalKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-09-01 08:43:46 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-09-01 08:43:46 +0200
commit12fe96873ad4a2f1d3c7c3d9f84bc8eb367fb2f0 (patch)
tree77722e773fb1b7f7b55a879c34863834ba6be8e5 /dev/kernel/SignalKit
parent257b0a377e0e0f226623e7aa807780051a9cc9e6 (diff)
feat: Signal System improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/SignalKit')
-rw-r--r--dev/kernel/SignalKit/SignalGen.h39
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