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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
#ifndef _CYGWIN_SIGNAL_H
#define _CYGWIN_SIGNAL_H
#if 0
struct ucontext
{
unsigned long uc_flags;
void *uc_link;
stack_t uc_stack;
struct sigcontext uc_mcontext;
sigset_t uc_sigmask;
};
#endif
typedef union sigval
{
int sival_int; /* integer signal value */
void *sival_ptr; /* pointer signal value */
} sigval_t;
#pragma pack(push,4)
typedef struct
{
int si_signo; /* signal number */
int si_errno; /* errno associated with signal */
int si_code; /* signal code */
union
{
int __pad[128]; /* plan for future growth */
union
{
/* timers */
struct
{
unsigned int si_tid; /* timer id */
unsigned int si_overrun; /* overrun count */
};
/* POSIX signals or signals invoked by kill() */
struct
{
pid_t si_pid; /* sender's pid */
uid_t si_uid; /* sender's uid */
};
sigval_t si_sigval; /* signal value */
};
struct
{
pid_t si_pid2; /* which child */
uid_t si_uid2; /* sender's uid */
int si_status; /* exit code */
clock_t si_utime; /* user time */
clock_t si_stime; /* system time */
};
/* core dumping signals */
struct
{
void *si_addr; /* faulting address */
};
};
} siginfo_t;
#pragma pack(pop)
enum
{
SI_USER = 1, /* sent by kill, raise, pthread_kill */
SI_ASYNCIO, /* sent by AIO completion (currently
unimplemented) */
SI_MESGQ, /* sent by real time mesq state change
(currently unimplemented) */
SI_TIMER, /* sent by timer expiration */
SI_QUEUE, /* sent by sigqueue (currently
unimplemented) */
SI_KERNEL, /* sent by system */
ILL_ILLOP, /* illegal opcode */
ILL_ILLOPN, /* illegal operand */
ILL_ILLADR, /* illegal addressing mode */
ILL_ILLTRP, /* illegal trap*/
ILL_PRVOPC, /* privileged opcode */
ILL_PRVREG, /* privileged register */
ILL_COPROC, /* coprocessor error */
ILL_BADSTK, /* internal stack error */
FPE_INTDIV, /* integer divide by zero */
FPE_INTOVF, /* integer overflow */
FPE_FLTDIV, /* floating point divide by zero */
FPE_FLTOVF, /* floating point overflow */
FPE_FLTUND, /* floating point underflow */
FPE_FLTRES, /* floating point inexact result */
FPE_FLTINV, /* floating point invalid operation */
FPE_FLTSUB, /* subscript out of range */
SEGV_MAPERR, /* address not mapped to object */
SEGV_ACCERR, /* invalid permissions for mapped object */
BUS_ADRALN, /* invalid address alignment. */
BUS_ADRERR, /* non-existant physical address. */
BUS_OBJERR, /* object specific hardware error. */
CLD_EXITED, /* child has exited */
CLD_KILLED, /* child was killed */
CLD_DUMPED, /* child terminated abnormally */
CLD_TRAPPED, /* traced child has trapped */
CLD_STOPPED, /* child has stopped */
CLD_CONTINUED /* stopped child has continued */
};
typedef struct sigevent
{
sigval_t sigev_value; /* signal value */
int sigev_signo; /* signal number */
int sigev_notify; /* notification type */
void (*sigev_notify_function) (sigval_t); /* notification function */
pthread_attr_t *sigev_notify_attributes; /* notification attributes */
} sigevent_t;
enum
{
SIGEV_SIGNAL = 0, /* a queued signal, with an application
defined value, is generated when the
event of interest occurs */
SIGEV_NONE, /* no asynchronous notification is
delivered when the event of interest
occurs */
SIGEV_THREAD /* a notification function is called to
perform notification */
};
typedef void (*_sig_func_ptr)(int);
struct sigaction
{
union
{
_sig_func_ptr sa_handler; /* SIG_DFL, SIG_IGN, or pointer to a function */
void (*sa_sigaction) ( int, siginfo_t *, void * );
};
sigset_t sa_mask;
int sa_flags;
};
#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children
stop */
#define SA_SIGINFO 2 /* Invoke the signal catching function
with three arguments instead of one
*/
#define SA_RESTART 0x10000000 /* Restart syscall on signal return */
#define SA_NODEFER 0x40000000 /* Don't automatically block the signal
when its handler is being executed */
#define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler */
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGABRT 6 /* used by abort */
#define SIGEMT 7 /* EMT instruction */
#define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGCLD 20 /* System V name for SIGCHLD */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
#define SIGIO 23 /* input/output possible signal */
#define SIGPOLL SIGIO /* System V name for SIGIO */
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#define SIGWINCH 28 /* window changed */
#define SIGLOST 29 /* resource lost (eg, record-lock lost) */
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
#define NSIG 32 /* signal 0 implied */
#endif /*_CYGWIN_SIGNAL_H*/
|