NeKernel dev
Loading...
Searching...
No Matches
Signals.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#pragma once
8
9#include <NeKit/Config.h>
10#include <NeKit/KernelPanic.h>
11
12#define SIGBAD 0 /* bad signal*/
13#define SIGKILL 1 /* kill */
14#define SIGPAUS 2 /* pause */
15#define SIGEXEC 3 /* execute */
16#define SIGTRAP 4 /* trap */
17#define SIGABRT 5 /* abort */
18#define SIGCONT 6 /* continue */
19#define SIGSEG 7 /* process fault */
20#define SIGBREK 8
21#define SIGATCH 9
22#define SIGDTCH 10
23
26
27namespace Kernel {
29
31inline constexpr auto kUserSignalSeed = 0x0895034fUL;
32
34inline constexpr auto kKernelSignalSeed = 0x0895034f9fUL;
35
37template <rt_signal_kind Sig, SizeT Seed = kUserSignalSeed>
39 STATIC_PASS(Sig > SIGBAD, "Signal is zero (invalid)");
40 return Sig ^ Seed;
41}
42
44template <SizeT Seed>
46 return (sig & 0xFF000000) == (Seed & 0xFF000000);
47}
48
51 return sig > SIGBAD && sig > SIGDTCH;
52}
53} // namespace Kernel
#define BOOL
#define STATIC_PASS(EXPR, MSG)
Checks during compile time whether a condition passes.
Definition KernelPanic.h:13
#define SIGDTCH
Definition Signals.h:22
#define SIGBAD
Definition Signals.h:12
UPS inline definitions.
Definition Device.h:12
__SIZE_TYPE__ SizeT
Definition Config.h:60
BOOL sig_matches_seed(rt_signal_kind sig)
Checks if the signal matches the seed (user_seed or kernel_seed).
Definition Signals.h:45
SizeT rt_signal_kind
Definition Signals.h:28
constexpr auto kKernelSignalSeed
Special signal seed for kernel usage.
Definition Signals.h:34
BOOL sig_validate_unique(rt_signal_kind sig)
Validate signal from sig and whtether the signal is greater than SIGDTCH.
Definition Signals.h:50
rt_signal_kind sig_generate_unique()
Generate signal from Sig.
Definition Signals.h:38
constexpr auto kUserSignalSeed
Standard signal seed for general purpose usage.
Definition Signals.h:31