cosmopolitan/libc/sysv/consts/sig.h
Justine Tunney 379cd77078
Improve memory manager and signal handling
On Windows, mmap() now chooses addresses transactionally. It reduces the
risk of badness when interacting with the WIN32 memory manager. We don't
throw darts anymore. There is also no more retry limit, since we recover
from mystery maps more gracefully. The subroutine for combining adjacent
maps has been rewritten for clarity. The print maps subroutine is better

This change goes to great lengths to perfect the stack overflow code. On
Windows you can now longjmp() out of a crash signal handler. Guard pages
previously weren't being restored properly by the signal handler. That's
fixed, so on Windows you can now handle a stack overflow multiple times.
Great thought has been put into selecting the perfect SIGSTKSZ constants
so you can save sigaltstack() memory. You can now use kprintf() with 512
bytes of stack available. The guard pages beneath the main stack are now
recorded in the memory manager.

This change fixes getcontext() so it works right with the %rax register.
2024-12-27 01:33:00 -08:00

82 lines
1.9 KiB
C

#ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_SIG_H_
#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SIG_H_
COSMOPOLITAN_C_START_
extern const int SIGBUS;
extern const int SIGTHR;
extern const int SIGCHLD;
extern const int SIGCONT;
extern const int SIGEMT;
extern const int SIGINFO;
extern const int SIGIO;
extern const int SIGPOLL;
extern const int SIGPWR;
extern const int SIGRTMAX;
extern const int SIGRTMIN;
extern const int SIGSTKFLT;
extern const int SIGSTOP;
extern const int SIGSYS;
extern const int SIGTSTP;
extern const int SIGUNUSED;
extern const int SIGURG;
extern const int SIGUSR1;
extern const int SIGUSR2;
extern const int SIG_BLOCK;
extern const int SIG_SETMASK;
extern const int SIG_UNBLOCK;
COSMOPOLITAN_C_END_
#define SIGABRT 6
#define SIGALRM 14
#define SIGFPE 8
#define SIGHUP 1
#define SIGILL 4
#define SIGINT 2
#define SIGIOT 6
#define SIGKILL 9
#define SIGPIPE 13
#define SIGPROF 27
#define SIGQUIT 3
#define SIGSEGV 11
#define SIGTERM 15
#define SIGTRAP 5
#define SIGTTIN 21
#define SIGTTOU 22
#define SIGVTALRM 26
#define SIGWINCH 28
#define SIGXCPU 24
#define SIGXFSZ 25
/*
* - No macro is define for SIGIO and SIGPOLL in order to persuade
* ./configure scripts to favor using poll() or select() instead of
* interrupt-based i/o.
*
* - No macros are defined for SIGRTMIN and SIGRTMAX because the project
* hasn't fleshed them out yet.
*
* - SIGTHR doesn't have a macro since it's internal to posix threads.
*
* - SIGSTKFLT is Linux-only so no macro is defined.
*/
#define SIGBUS SIGBUS
#define SIGCHLD SIGCHLD
#define SIGCONT SIGCONT
#define SIGEMT SIGEMT
#define SIGINFO SIGINFO
#define SIGPWR SIGPWR
#define SIGSTOP SIGSTOP
#define SIGSYS SIGSYS
#define SIGTSTP SIGTSTP
#define SIGURG SIGURG
#define SIGUSR1 SIGUSR1
#define SIGUSR2 SIGUSR2
#define SIG_BLOCK SIG_BLOCK
#define SIG_SETMASK SIG_SETMASK
#define SIG_UNBLOCK SIG_UNBLOCK
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_SIG_H_ */