summaryrefslogtreecommitdiff
path: root/include/signal.h
blob: 8e49fc8ab00b25533232584b0372b2e59a22e694 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#ifndef __SIGNAL_H
#define __SIGNAL_H

#define __BITS_SIGEVENT_H_
#include <bits/sigevent.h>

#define __BITS_SIGINFO_H_
#include <bits/siginfo.h> // for siginfo_t

union sigval;

#define SIG_DFL	 ((void (*)(int))0)
#define SIG_ERR	 ((void (*)(int)) - 1)
#define SIG_IGN	 ((void (*)(int))1)
#define SIG_HOLD ((void (*)(int))2)

#define SIG_BLOCK   0
#define SIG_UNBLOCK 1
#define SIG_SETMASK 2

#define SI_ASYNCNL (-60)
#define SI_TKILL   (-6)
#define SI_SIGIO   (-5)
#define SI_ASYNCIO (-4)
#define SI_MESGQ   (-3)
#define SI_TIMER   (-2)
#define SI_QUEUE   (-1)
#define SI_USER	   0
#define SI_KERNEL  128

#define SIGHUP	  1
#define SIGINT	  2
#define SIGQUIT	  3
#define SIGILL	  4
#define SIGTRAP	  5
#define SIGABRT	  6
#define SIGIOT	  SIGABRT
#define SIGBUS	  7
#define SIGFPE	  8
#define SIGKILL	  9
#define SIGUSR1	  10
#define SIGSEGV	  11
#define SIGUSR2	  12
#define SIGPIPE	  13
#define SIGALRM	  14
#define SIGTERM	  15
#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 SIGPOLL	  29
#define SIGPWR	  30
#define SIGSYS	  31
#define SIGUNUSED SIGSYS

#define SA_NOCLDSTOP 0x00000001
#define SA_NOCLDWAIT 0x00000002
#define SA_SIGINFO   0x00000004
#define SA_ONSTACK   0x08000000
#define SA_RESTART   0x10000000
#define SA_NODEFER   0x40000000
#define SA_RESETHAND 0x80000000

#define SS_ONSTACK 1
#define SS_DISABLE 2

typedef __INT64_TYPE__ pid_t;
typedef __UINT32_TYPE__ uid_t;
typedef __UINT64_TYPE__ sigset_t;
typedef __SIZE_TYPE__ size_t;
typedef struct __thread_self pthread_t;

typedef void (*sighandler_t)(int);

typedef _Atomic int sig_atomic_t;

struct timespec;

typedef struct {
	void *ss_sp;
	int ss_flags;
	size_t ss_size;
} stack_t;

struct sigaction {
	void (*sa_handler)(int);
	sigset_t sa_mask;
	int sa_flags;
	void (*sa_sigaction)(int, siginfo_t *, void *);
};

extern const char *const sys_siglist[64];
extern const char *const sys_sigabbrev[64];

int kill(pid_t, int);
int killpg(pid_t, int);
void psiginfo(const siginfo_t *, const char *);
void psignal(int, const char *);
int pthread_kill(pthread_t, int);
int pthread_sigmask(int, const sigset_t *restrict, sigset_t *restrict);
int raise(int);
int sig2str(int, char *);
int sigaction(int, const struct sigaction *restrict,
	      struct sigaction *restrict);
int sigaddset(sigset_t *, int);
int sigaltstack(const stack_t *restrict, stack_t *restrict);
int sigdelset(sigset_t *, int);
int sigemptyset(sigset_t *);
int sigfillset(sigset_t *);
int sigismember(const sigset_t *, int);
void (*signal(int, void (*)(int)))(int);
int sigpending(sigset_t *);
int sigprocmask(int, const sigset_t *restrict, sigset_t *restrict);
int sigqueue(pid_t, int, union sigval);
int sigsuspend(const sigset_t *);
int sigtimedwait(const sigset_t *restrict, siginfo_t *restrict,
		 const struct timespec *restrict);
int sigwait(const sigset_t *restrict, int *restrict);
int sigwaitinfo(const sigset_t *restrict, siginfo_t *restrict);
int str2sig(const char *restrict, int *restrict);

sighandler_t sysv_signal(int signum, sighandler_t handler);

#endif