summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/include/signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/include/signal.h')
-rw-r--r--mdk-stage1/dietlibc/include/signal.h487
1 files changed, 476 insertions, 11 deletions
diff --git a/mdk-stage1/dietlibc/include/signal.h b/mdk-stage1/dietlibc/include/signal.h
index 9ed93fe83..fdc0518cf 100644
--- a/mdk-stage1/dietlibc/include/signal.h
+++ b/mdk-stage1/dietlibc/include/signal.h
@@ -5,31 +5,496 @@
#define __WANT_POSIX1B_SIGNALS__
-#include <linux/types.h>
-#include <linux/signal.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
+#define NSIG 32
+
+#ifdef __mips__
+#define _NSIG 128
+#else
+#define _NSIG 64
+#endif
+
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGSEGV 11
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGUNUSED 31
+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__arm__) \
+ || defined(__s390__) || defined(__ia64__)
+#define SIGBUS 7
+#define SIGUSR1 10
+#define SIGUSR2 12
+#define SIGSTKFLT 16
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPWR 30
+#define SIGSYS 31
+#elif defined(__alpha__) || defined(__sparc__)
+#define SIGEMT 7
+#define SIGBUS 10
+#define SIGSYS 12
+#define SIGURG 16
+#define SIGSTOP 17
+#define SIGTSTP 18
+#define SIGCONT 19
+#define SIGCHLD 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGIO 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGPWR 29
+#define SIGUSR1 30
+#define SIGUSR2 31
+#if defined(__alpha__)
+#define SIGINFO SIGPWR
+#endif
+#elif defined(__mips__)
+#define SIGEMT 7
+#define SIGBUS 10
+#define SIGSYS 12
+#define SIGUSR1 16
+#define SIGUSR2 17
+#define SIGCHLD 18
+#define SIGPWR 19
+#define SIGWINCH 20
+#define SIGURG 21
+#define SIGIO 22
+#define SIGSTOP 23
+#define SIGTSTP 24
+#define SIGCONT 25
+#define SIGTTIN 26
+#define SIGTTOU 27
+#define SIGVTALRM 28
+#define SIGPROF 29
+#define SIGXCPU 30
+#define SIGXFSZ 31
+#elif defined(__hppa__)
+#define SIGEMT 7
+#define SIGBUS 10
+#define SIGSYS 12
+#define SIGUSR1 16
+#define SIGUSR2 17
+#define SIGCHLD 18
+#define SIGPWR 19
+#define SIGVTALRM 20
+#define SIGPROF 21
+#define SIGIO 22
+#define SIGWINCH 23
+#define SIGSTOP 24
+#define SIGTSTP 25
+#define SIGCONT 26
+#define SIGTTIN 27
+#define SIGTTOU 28
+#define SIGURG 29
+#define SIGLOST 30
+#define SIGUNUSED 31
+#define SIGRESERVE SIGUNUSE
+#define SIGXCPU 33
+#define SIGXFSZ 34
+#define SIGSTKFLT 36
+
+#else
+#error signal layout not yet known
+#endif
+
+#define SIGCLD SIGCHLD
+#define SIGLOST SIGPWR
+#define SIGPOLL SIGIO
+
+/* These should not be considered constants from userland. */
+#ifdef __hppa__
+#define SIGRTMIN 37
+#else
+#define SIGRTMIN 32
+#endif
+#define SIGRTMAX (_NSIG-1)
+
+/* SA_FLAGS values: */
+#if defined(__alpha__)
+#define SA_ONSTACK 0x00000001
+#define SA_RESTART 0x00000002
+#define SA_NOCLDSTOP 0x00000004
+#define SA_NODEFER 0x00000008
+#define SA_RESETHAND 0x00000010
+#define SA_NOCLDWAIT 0x00000020 /* not supported yet */
+#define SA_SIGINFO 0x00000040
+#define SA_INTERRUPT 0x20000000 /* dummy -- ignored */
+#elif defined(__hppa__)
+#define SA_ONSTACK 0x00000001
+#define SA_RESETHAND 0x00000004
+#define SA_NOCLDSTOP 0x00000008
+#define SA_SIGINFO 0x00000010
+#define SA_NODEFER 0x00000020
+#define SA_RESTART 0x00000040
+#define SA_NOCLDWAIT 0x00000080 /* not supported yet */
+#define _SA_SIGGFAULT 0x00000100 /* HPUX */
+#define SA_INTERRUPT 0x20000000 /* dummy -- ignored */
+#define SA_RESTORER 0x04000000 /* obsolete -- ignored */
+#elif defined (__sparc__)
+#define SV_SSTACK 1 /* This signal handler should use sig-stack */
+#define SV_INTR 2 /* Sig return should not restart system call */
+#define SV_RESET 4 /* Set handler to SIG_DFL upon taken signal */
+#define SV_IGNCHILD 8 /* Do not send SIGCHLD */
+
+#define SA_NOCLDSTOP SV_IGNCHILD
+#define SA_STACK SV_SSTACK
+#define SA_ONSTACK SV_SSTACK
+#define SA_RESTART SV_INTR
+#define SA_RESETHAND SV_RESET
+#define SA_INTERRUPT 0x10
+#define SA_NODEFER 0x20
+#define SA_SHIRQ 0x40
+#define SA_NOCLDWAIT 0x100 /* not supported yet */
+#define SA_SIGINFO 0x200
+#else
+#if defined (__mips__)
+#define SA_NOCLDSTOP 0x00000001
+#define SA_SIGINFO 0x00000008
+#define SA_NOCLDWAIT 0x00010000 /* Not supported yet */
+#else
+#define SA_NOCLDSTOP 0x00000001
+#define SA_NOCLDWAIT 0x00000002 /* not supported yet */
+#define SA_SIGINFO 0x00000004
+#endif
+#if defined(__arm__)
+#define SA_THIRTYTWO 0x02000000
+#endif
+#define SA_RESTORER 0x04000000
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_INTERRUPT 0x20000000 /* dummy -- ignored */
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#endif
+
+/* ugh, historic Linux legacy, for gpm :-( */
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+
+/* sigaltstack controls */
+#define SS_ONSTACK 1
+#define SS_DISABLE 2
+
+#define MINSIGSTKSZ 2048
+#define SIGSTKSZ 8192
+
+#if defined(__alpha__) || defined(__mips__)
+#define SIG_BLOCK 1 /* for blocking signals */
+#define SIG_UNBLOCK 2 /* for unblocking signals */
+#define SIG_SETMASK 3 /* for setting the signal mask */
+#else
+#define SIG_BLOCK 0 /* for blocking signals */
+#define SIG_UNBLOCK 1 /* for unblocking signals */
+#define SIG_SETMASK 2 /* for setting the signal mask */
+#endif
+
+typedef int sig_atomic_t;
typedef void (*sighandler_t)(int);
+#ifdef _BSD_SOURCE
+typedef sighandler_t sig_t;
+#endif
+
+#define SIG_DFL ((sighandler_t)0) /* default signal handling */
+#define SIG_IGN ((sighandler_t)1) /* ignore signal */
+#define SIG_ERR ((sighandler_t)-1) /* error return from signal */
+
+typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+} sigval_t;
+
+#define SI_MAX_SIZE 128
+#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 3)
+
+typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+ int si_code;
+ union {
+ int _pad[SI_PAD_SIZE];
+ /* kill() */
+ struct {
+ pid_t _pid; /* sender's pid */
+ uid_t _uid; /* sender's uid */
+ } _kill;
+ /* POSIX.1b timers */
+ struct {
+ unsigned int _timer1;
+ unsigned int _timer2;
+ } _timer;
+ /* POSIX.1b signals */
+ struct {
+ pid_t _pid; /* sender's pid */
+ uid_t _uid; /* sender's uid */
+ sigval_t _sigval;
+ } _rt;
+ /* SIGCHLD */
+ struct {
+ pid_t _pid; /* which child */
+ uid_t _uid; /* sender's uid */
+ int _status; /* exit code */
+ clock_t _utime;
+ clock_t _stime;
+ } _sigchld;
+ /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
+ struct {
+ void *_addr; /* faulting insn/memory ref. */
+ } _sigfault;
+ /* SIGPOLL */
+ struct {
+ int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
+ int _fd;
+ } _sigpoll;
+ } _sifields;
+} siginfo_t;
+
+/*
+ * How these fields are to be accessed.
+ */
+#define si_pid _sifields._kill._pid
+#define si_uid _sifields._kill._uid
+#define si_status _sifields._sigchld._status
+#define si_utime _sifields._sigchld._utime
+#define si_stime _sifields._sigchld._stime
+#define si_value _sifields._rt._sigval
+#define si_int _sifields._rt._sigval.sival_int
+#define si_ptr _sifields._rt._sigval.sival_ptr
+#define si_addr _sifields._sigfault._addr
+#define si_band _sifields._sigpoll._band
+#define si_fd _sifields._sigpoll._fd
+
+/* Values for `si_code'. Positive values are reserved for kernel-generated
+ signals. */
+enum {
+ SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
+# define SI_ASYNCNL SI_ASYNCNL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+# define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+# define SI_ASYNCIO SI_ASYNCIO
+ SI_MESGQ, /* Sent by real time mesq state change. */
+# define SI_MESGQ SI_MESGQ
+ SI_TIMER, /* Sent by timer expiration. */
+# define SI_TIMER SI_TIMER
+ SI_QUEUE, /* Sent by sigqueue. */
+# define SI_QUEUE SI_QUEUE
+ SI_USER, /* Sent by kill, sigsend, raise. */
+# define SI_USER SI_USER
+ SI_KERNEL = 0x80 /* Send by kernel. */
+#define SI_KERNEL SI_KERNEL
+};
+
+
+/* `si_code' values for SIGILL signal. */
+enum {
+ ILL_ILLOPC = 1, /* Illegal opcode. */
+# define ILL_ILLOPC ILL_ILLOPC
+ ILL_ILLOPN, /* Illegal operand. */
+# define ILL_ILLOPN ILL_ILLOPN
+ ILL_ILLADR, /* Illegal addressing mode. */
+# define ILL_ILLADR ILL_ILLADR
+ ILL_ILLTRP, /* Illegal trap. */
+# define ILL_ILLTRP ILL_ILLTRP
+ ILL_PRVOPC, /* Privileged opcode. */
+# define ILL_PRVOPC ILL_PRVOPC
+ ILL_PRVREG, /* Privileged register. */
+# define ILL_PRVREG ILL_PRVREG
+ ILL_COPROC, /* Coprocessor error. */
+# define ILL_COPROC ILL_COPROC
+ ILL_BADSTK /* Internal stack error. */
+# define ILL_BADSTK ILL_BADSTK
+};
+
+/* `si_code' values for SIGFPE signal. */
+enum {
+ FPE_INTDIV = 1, /* Integer divide by zero. */
+# define FPE_INTDIV FPE_INTDIV
+ FPE_INTOVF, /* Integer overflow. */
+# define FPE_INTOVF FPE_INTOVF
+ FPE_FLTDIV, /* Floating point divide by zero. */
+# define FPE_FLTDIV FPE_FLTDIV
+ FPE_FLTOVF, /* Floating point overflow. */
+# define FPE_FLTOVF FPE_FLTOVF
+ FPE_FLTUND, /* Floating point underflow. */
+# define FPE_FLTUND FPE_FLTUND
+ FPE_FLTRES, /* Floating point inexact result. */
+# define FPE_FLTRES FPE_FLTRES
+ FPE_FLTINV, /* Floating point invalid operation. */
+# define FPE_FLTINV FPE_FLTINV
+ FPE_FLTSUB /* Subscript out of range. */
+# define FPE_FLTSUB FPE_FLTSUB
+};
+
+/* `si_code' values for SIGSEGV signal. */
+enum {
+ SEGV_MAPERR = 1, /* Address not mapped to object. */
+# define SEGV_MAPERR SEGV_MAPERR
+ SEGV_ACCERR /* Invalid permissions for mapped object. */
+# define SEGV_ACCERR SEGV_ACCERR
+};
+
+/* `si_code' values for SIGBUS signal. */
+enum {
+ BUS_ADRALN = 1, /* Invalid address alignment. */
+# define BUS_ADRALN BUS_ADRALN
+ BUS_ADRERR, /* Non-existant physical address. */
+# define BUS_ADRERR BUS_ADRERR
+ BUS_OBJERR /* Object specific hardware error. */
+# define BUS_OBJERR BUS_OBJERR
+};
+
+/* `si_code' values for SIGTRAP signal. */
+enum {
+ TRAP_BRKPT = 1, /* Process breakpoint. */
+# define TRAP_BRKPT TRAP_BRKPT
+ TRAP_TRACE /* Process trace trap. */
+# define TRAP_TRACE TRAP_TRACE
+};
+
+/* `si_code' values for SIGCHLD signal. */
+enum {
+ CLD_EXITED = 1, /* Child has exited. */
+# define CLD_EXITED CLD_EXITED
+ CLD_KILLED, /* Child was killed. */
+# define CLD_KILLED CLD_KILLED
+ CLD_DUMPED, /* Child terminated abnormally. */
+# define CLD_DUMPED CLD_DUMPED
+ CLD_TRAPPED, /* Traced child has trapped. */
+# define CLD_TRAPPED CLD_TRAPPED
+ CLD_STOPPED, /* Child has stopped. */
+# define CLD_STOPPED CLD_STOPPED
+ CLD_CONTINUED /* Stopped child has continued. */
+# define CLD_CONTINUED CLD_CONTINUED
+};
+
+/* `si_code' values for SIGPOLL signal. */
+enum {
+ POLL_IN = 1, /* Data input available. */
+# define POLL_IN POLL_IN
+ POLL_OUT, /* Output buffers available. */
+# define POLL_OUT POLL_OUT
+ POLL_MSG, /* Input message available. */
+# define POLL_MSG POLL_MSG
+ POLL_ERR, /* I/O error. */
+# define POLL_ERR POLL_ERR
+ POLL_PRI, /* High priority input available. */
+# define POLL_PRI POLL_PRI
+ POLL_HUP /* Device disconnected. */
+# define POLL_HUP POLL_HUP
+};
+
+#define _NSIG_WORDS ((_NSIG/sizeof(long))>>3)
+
+typedef struct {
+ unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+
+struct sigaction {
+#if defined(__alpha__)
+ union {
+ sighandler_t _sa_handler;
+ void (*_sa_sigaction)(int, siginfo_t*, void*);
+ } _u;
+ sigset_t sa_mask;
+ unsigned long sa_flags;
+#elif defined(__ia64__) || defined(__hppa__)
+ union {
+ sighandler_t _sa_handler;
+ void (*_sa_sigaction)(int, siginfo_t*, void*);
+ } _u;
+ unsigned long sa_flags;
+ sigset_t sa_mask;
+#elif defined(__mips__)
+ unsigned long sa_flags;
+ union {
+ sighandler_t _sa_handler;
+ void (*_sa_sigaction)(int, siginfo_t*, void*);
+ } _u;
+ sigset_t sa_mask;
+ void (*sa_restorer)(void);
+ int sa_resv[1];
+#else /* arm, i386, ppc, s390, sparc, saprc64, x86_64 */
+ union {
+ sighandler_t _sa_handler;
+ void (*_sa_sigaction)(int, siginfo_t*, void*);
+ } _u;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ sigset_t sa_mask;
+#endif
+};
+
+#define sa_handler _u._sa_handler
+#define sa_sigaction _u._sa_sigaction
+
+typedef struct sigaltstack {
+#if defined(__mips__)
+ void *ss_sp;
+ size_t ss_size;
+ int ss_flags;
+#else
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+#endif
+} stack_t;
+
+int sigaltstack(const struct sigaltstack *newstack, struct sigaltstack *oldstack) __THROW;
+
int sigemptyset(sigset_t *set) __THROW;
int sigfillset(sigset_t *set) __THROW;
int sigaddset(sigset_t *set, int signum) __THROW;
int sigdelset(sigset_t *set, int signum) __THROW;
+int sigismember(const sigset_t *set, int signo) __THROW;
+int sigsuspend(const sigset_t *mask) __THROW;
+int sigpending(sigset_t *set) __THROW;
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset) __THROW;
+
+
sighandler_t signal(int signum, sighandler_t action);
+
int raise (int sig) __THROW;
+int kill(pid_t pid, int sig) __THROW;
+
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) __THROW;
-int sigaltstack(const struct sigaltstack *newstack, struct sigaltstack *oldstack) __THROW;
-#ifndef SIGCLD
-#define SIGCLD SIGCHLD
-#endif
+int sigtimedwait(const sigset_t *mask, siginfo_t *info, const struct timespec *ts) __THROW;
+int sigqueueinfo(int pid, int sig, siginfo_t *info) __THROW;
+int siginterrupt(int sig, int flag) __THROW;
-extern const char *const sys_siglist[];
+int killpg(int pgrp, int sig) __THROW;
-typedef __sighandler_t sig_t;
+/* 0 is OK ! kernel puts in MAX_THREAD_TIMEOUT :) */
+#define sigwaitinfo(m, i) sigtimedwait((m),(i),0)
-#ifndef NSIG
-#define NSIG _NSIG
-#endif
+extern const char *const sys_siglist[];
#endif