summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/SignalKit/Signals.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-23 21:06:27 -0500
committerGitHub <noreply@github.com>2025-11-23 21:06:27 -0500
commit23040fad647634c08697451fc22ee2ca999629c8 (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /src/kernel/SignalKit/Signals.h
parente5cc7351f0577b54c528fb827a7c7e6306c3e843 (diff)
parent83d870e58457a1d335a1d9b9966a6a1887cc297b (diff)
Merge pull request #81 from nekernel-org/dev
feat! breaking changes on kernel sources.
Diffstat (limited to 'src/kernel/SignalKit/Signals.h')
-rw-r--r--src/kernel/SignalKit/Signals.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/kernel/SignalKit/Signals.h b/src/kernel/SignalKit/Signals.h
new file mode 100644
index 00000000..b4e72fc4
--- /dev/null
+++ b/src/kernel/SignalKit/Signals.h
@@ -0,0 +1,51 @@
+/* ========================================
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+======================================== */
+
+#pragma once
+
+#include <NeKit/Defines.h>
+
+#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 <rt_signal_kind Sig, SizeT Seed = kUserSignalSeed>
+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 <SizeT Seed>
+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