diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:47:56 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:47:56 +0300 |
commit | c558a99e0be506a9abdf677f0ca4490644e05fc1 (patch) | |
tree | 17aef678ad05a32ef96ce8385703cb3fe089a5c7 /sys/include/ape/signal.h | |
parent | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (diff) |
Import sources from 2011-03-30 iso image - sys/include
Diffstat (limited to 'sys/include/ape/signal.h')
-rwxr-xr-x | sys/include/ape/signal.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/sys/include/ape/signal.h b/sys/include/ape/signal.h new file mode 100755 index 000000000..81884bddf --- /dev/null +++ b/sys/include/ape/signal.h @@ -0,0 +1,95 @@ +#ifndef __SIGNAL_H +#define __SIGNAL_H +#pragma lib "/$M/lib/ape/libap.a" + +typedef int sig_atomic_t; + +/* + * We don't give arg types for signal handlers, in spite of ANSI requirement + * that it be 'int' (the signal number), because some programs need an + * additional context argument. So the real type of signal handlers is + * void handler(int sig, char *, struct Ureg *) + * where the char * is the Plan 9 message and Ureg is defined in <ureg.h> + */ +#define SIG_DFL ((void (*)())0) +#define SIG_ERR ((void (*)())-1) +#define SIG_IGN ((void (*)())1) + +#define SIGHUP 1 /* hangup */ +#define SIGINT 2 /* interrupt */ +#define SIGQUIT 3 /* quit */ +#define SIGILL 4 /* illegal instruction (not reset when caught)*/ +#define SIGABRT 5 /* used by abort */ +#define SIGFPE 6 /* floating point exception */ +#define SIGKILL 7 /* kill (cannot be caught or ignored) */ +#define SIGSEGV 8 /* segmentation violation */ +#define SIGPIPE 9 /* write on a pipe with no one to read it */ +#define SIGALRM 10 /* alarm clock */ +#define SIGTERM 11 /* software termination signal from kill */ +#define SIGUSR1 12 /* user defined signal 1 */ +#define SIGUSR2 13 /* user defined signal 2 */ +#define SIGBUS 14 /* bus error */ + +/* The following symbols must be defined, but the signals needn't be supported */ +#define SIGCHLD 15 /* child process terminated or stopped */ +#define SIGCONT 16 /* continue if stopped */ +#define SIGSTOP 17 /* stop */ +#define SIGTSTP 18 /* interactive stop */ +#define SIGTTIN 19 /* read from ctl tty by member of background */ +#define SIGTTOU 20 /* write to ctl tty by member of background */ + +#ifdef _BSD_EXTENSION +#define NSIG 21 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern void (*signal(int, void (*)()))(); +extern int raise(int); + +#ifdef __cplusplus +} +#endif + +#ifdef _POSIX_SOURCE + +typedef long sigset_t; +struct sigaction { + void (*sa_handler)(); + sigset_t sa_mask; + int sa_flags; +}; +/* values for sa_flags */ +#define SA_NOCLDSTOP 1 + +/* first argument to sigprocmask */ +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __TYPES_H +extern int kill(pid_t, int); +#endif +extern int sigemptyset(sigset_t *); +extern int sigfillset(sigset_t *); +extern int sigaddset(sigset_t *, int); +extern int sigdelset(sigset_t *, int); +extern int sigismember(const sigset_t *, int); +extern int sigaction(int, const struct sigaction *, struct sigaction *); +extern int sigprocmask(int, sigset_t *, sigset_t *); +extern int sigpending(sigset_t *); +extern int sigsuspend(const sigset_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* _POSIX_SOURCE */ + +#endif /* __SIGNAL_H */ |