blob: 5f39ddbd3943e65fa7b2cb11e7c3b8fea402a056 [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#ifndef _SIGNAL_H
2#define _SIGNAL_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Rich Felker1322cb82011-02-14 20:33:54 -05008#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
9 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
10
Rich Felker855df692011-02-20 01:48:51 -050011#ifdef _GNU_SOURCE
12#define __siginfo siginfo
13#endif
14
Rich Felker0b44a032011-02-12 00:22:29 -050015#define __NEED_size_t
16#define __NEED_pid_t
17#define __NEED_uid_t
18#define __NEED_struct_timespec
19#define __NEED_pthread_t
Rich Felker80c4dcd2011-03-29 13:01:25 -040020#define __NEED_pthread_attr_t
Rich Felker0b44a032011-02-12 00:22:29 -050021#define __NEED_time_t
22#define __NEED_clock_t
23#define __NEED_sigset_t
24#define __NEED_siginfo_t
25
26#include <bits/alltypes.h>
27
Rich Felker80c4dcd2011-03-29 13:01:25 -040028struct sigaction {
Rich Felker0b44a032011-02-12 00:22:29 -050029 union {
30 void (*sa_handler)(int);
31 void (*sa_sigaction)(int, siginfo_t *, void *);
32 } __sa_handler;
33 sigset_t sa_mask;
34 int sa_flags;
35 void (*__sa_restorer)(void);
36};
37#define sa_handler __sa_handler.sa_handler
38#define sa_sigaction __sa_handler.sa_sigaction
39
Rich Felker80c4dcd2011-03-29 13:01:25 -040040typedef struct {
Rich Felker0b44a032011-02-12 00:22:29 -050041 void *ss_sp;
42 int ss_flags;
43 size_t ss_size;
44} stack_t;
45
Rich Felker80c4dcd2011-03-29 13:01:25 -040046union sigval {
Rich Felker0b44a032011-02-12 00:22:29 -050047 int sival_int;
48 void *sival_ptr;
49};
50
Rich Felker80c4dcd2011-03-29 13:01:25 -040051struct sigevent {
52 union sigval sigev_value;
53 int sigev_signo;
54 int sigev_notify;
55 void (*sigev_notify_function)(union sigval);
56 pthread_attr_t *sigev_notify_attributes;
Rich Felker7f547152011-06-16 17:11:35 -040057 char __pad[56-3*sizeof(long)];
Rich Felker80c4dcd2011-03-29 13:01:25 -040058};
59
60#define SIGEV_SIGNAL 0
61#define SIGEV_NONE 1
62#define SIGEV_THREAD 2
63
Rich Felker0b44a032011-02-12 00:22:29 -050064int __libc_current_sigrtmin(void);
65int __libc_current_sigrtmax(void);
66
67#define SIGRTMIN (__libc_current_sigrtmin())
68#define SIGRTMAX (__libc_current_sigrtmax())
69
Rich Felker0b44a032011-02-12 00:22:29 -050070int kill(pid_t, int);
Rich Felker0b44a032011-02-12 00:22:29 -050071
72int sigemptyset(sigset_t *);
73int sigfillset(sigset_t *);
74int sigaddset(sigset_t *, int);
75int sigdelset(sigset_t *, int);
76int sigismember(const sigset_t *, int);
77
78int sigprocmask(int, const sigset_t *, sigset_t *);
79int sigsuspend(const sigset_t *);
80int sigaction(int, const struct sigaction *, struct sigaction *);
81int sigpending(sigset_t *);
82int sigwait(const sigset_t *, int *);
83int sigwaitinfo(const sigset_t *, siginfo_t *);
84int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *);
85int sigqueue(pid_t, int, const union sigval);
86
Rich Felker0b44a032011-02-12 00:22:29 -050087int pthread_sigmask(int, const sigset_t *, sigset_t *);
88int pthread_kill(pthread_t, int);
89
Rich Felkeradb70932011-09-02 14:25:43 -040090void psiginfo(const siginfo_t *, const char *);
91void psignal(int, const char *);
92
Rich Felker1322cb82011-02-14 20:33:54 -050093#endif
94
95#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
96int killpg(pid_t, int);
97int sigaltstack(const stack_t *, stack_t *);
98int sighold(int);
99int sigignore(int);
100int siginterrupt(int, int);
101int sigpause(int);
102int sigrelse(int);
103void (*sigset(int, void (*)(int)))(int);
104#endif
105
Rich Felker0b44a032011-02-12 00:22:29 -0500106#ifdef _GNU_SOURCE
Rich Felker0f5b4352011-04-13 08:45:28 -0400107typedef void (*sighandler_t)(int);
Rich Felker1322cb82011-02-14 20:33:54 -0500108void (*bsd_signal(int, void (*)(int)))(int);
Rich Felker20291142011-05-05 17:44:06 -0400109#define SA_NOMASK SA_NODEFER
Rich Felker0b44a032011-02-12 00:22:29 -0500110#endif
111
Rich Felker3eb9fea2011-02-15 15:10:00 -0500112#include <bits/signal.h>
113
Rich Felker1322cb82011-02-14 20:33:54 -0500114typedef int sig_atomic_t;
115
116void (*signal(int, void (*)(int)))(int);
117int raise(int);
118
Rich Felker0b44a032011-02-12 00:22:29 -0500119#ifdef __cplusplus
120}
121#endif
122
123#endif