42_KFS/headers/signal.h
2025-04-18 17:07:56 +02:00

62 lines
2.1 KiB
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#define SIG_DFL 0
#define SIG_IGN -1
typedef enum {
SIGABRT, // Abort signal from abort(3)
SIGALRM, // Timer signal from alarm(2)
SIGBUS, // Bus error (bad memory access)
SIGCHLD, // Child stopped or terminated
SIGCLD, // A synonym for SIGCHLD
SIGCONT, // Continue if stopped
SIGEMT, // Emulator trap
SIGFPE, // Floating-point exception
SIGHUP, // Hangup detected on controlling terminal or death of
// controlling process
SIGILL, // Illegal Instruction
SIGINFO, // A synonym for SIGPWR
SIGINT, // Interrupt from keyboard
SIGIO, // I/O now possible (4.2BSD)
SIGIOT, // IOT trap. A synonym for SIGABRT
SIGKILL, // Kill signal
SIGLOST, // File lock lost (unused)
SIGPIPE, // Broken pipe: write to pipe with no readers; see pipe(7)
SIGPOLL, // Pollable event (Sys V); synonym for SIGIO
SIGPROF, // Profiling timer expired
SIGPWR, // Power failure (System V)
SIGQUIT, // Quit from keyboard
SIGSEGV, // Invalid memory reference
SIGSTKFLT, // Stack fault on coprocessor (unused)
SIGSTOP, // Stop process
SIGTSTP, // Stop typed at terminal
SIGSYS, // Bad system call (SVr4); see also seccomp(2)
SIGTERM, // Termination signal
SIGTRAP, // Trace/breakpoint trap
SIGTTIN, // Terminal input for background process
SIGTTOU, // Terminal output for background process
SIGUNUSED, // Synonymous with SIGSYS
SIGURG, // Urgent condition on socket (4.2BSD)
SIGUSR1, // User-defined signal 1
SIGUSR2, // User-defined signal 2
SIGVTALRM, // Virtual alarm clock (4.2BSD)
SIGXCPU, // CPU time limit exceeded (4.2BSD); see setrlimit(2)
SIGXFSZ, // File size limit exceeded (4.2BSD); see setrlimit(2)
SIGWINCH, // Window resize signal (4.3BSD, Sun)
SIG_INT, // Interrupt from keyboard
LAST
} SIGNAL_CODE;
typedef void (*signal_handler_t)(int);
void signal(SIGNAL_CODE sig_num, void *handler);
void kill(int pid, SIGNAL_CODE sig_num);
void exec_signal_pending(void);
struct signal_data {
void *handlers[LAST];
uint32_t pending;
};