diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-06 11:28:06 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-06 11:28:06 +0000 |
| commit | c109164a9f68935098a4915e7237828cafdef5f7 (patch) | |
| tree | c96582cc3e9e7ffa752631fd68bd084982503224 /include/signal_handler.h | |
| parent | c0dc27b0e94d8aca60fc47c9dee09eb170cb79dd (diff) | |
fix non-signal-safe exit, and refactor signal handlers
Diffstat (limited to 'include/signal_handler.h')
| -rw-r--r-- | include/signal_handler.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/signal_handler.h b/include/signal_handler.h new file mode 100644 index 0000000..12ab0a5 --- /dev/null +++ b/include/signal_handler.h @@ -0,0 +1,32 @@ +#pragma once + +#include <signal.h> +#include <atomic> + +#include "all.h" + +namespace ov4 +{ + +typedef void handler_t(int); + +inline sigset_t + block_sig_TTOU, + block_job, + block_io; + +inline std::atomic_int exit_code, exit_required_pid; + +inline constexpr int SIGNAL_EXIT_CODE_BASE = 128; + +void signal_init(); +handler_t *Signal(int signum, handler_t *handler); +void sigchld_handler(int sig); +void sigint_handler(int sig); +void sigtstp_handler(int sig); +void sigquit_handler(int sig); + +int block_all(sigset_t *prev); +int block_handler(sigset_t *prev); + +} |
