OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [conts/] [posix/] [libposix/] [include/] [posix/] [signal.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/* Copyright (C) 1991-2003, 2004 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Lesser General Public
6
   License as published by the Free Software Foundation; either
7
   version 2.1 of the License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Lesser General Public License for more details.
13
 
14
   You should have received a copy of the GNU Lesser General Public
15
   License along with the GNU C Library; if not, write to the Free
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
   02111-1307 USA.  */
18
 
19
/*
20
 *      ISO C99 Standard: 7.14 Signal handling <signal.h>
21
 */
22
 
23
#ifndef _SIGNAL_H
24
 
25
#if !defined __need_sig_atomic_t && !defined __need_sigset_t
26
# define _SIGNAL_H
27
#endif
28
 
29
#include <features.h>
30
 
31
__BEGIN_DECLS
32
 
33
#include <bits/sigset.h>                /* __sigset_t, __sig_atomic_t.  */
34
 
35
/* An integral type that can be modified atomically, without the
36
   possibility of a signal arriving in the middle of the operation.  */
37
#if defined __need_sig_atomic_t || defined _SIGNAL_H
38
# ifndef __sig_atomic_t_defined
39
#  define __sig_atomic_t_defined
40
__BEGIN_NAMESPACE_STD
41
typedef __sig_atomic_t sig_atomic_t;
42
__END_NAMESPACE_STD
43
# endif
44
# undef __need_sig_atomic_t
45
#endif
46
 
47
#if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX)
48
# ifndef __sigset_t_defined
49
#  define __sigset_t_defined
50
typedef __sigset_t sigset_t;
51
# endif
52
# undef __need_sigset_t
53
#endif
54
 
55
#ifdef _SIGNAL_H
56
 
57
#include <bits/types.h>
58
#include <bits/signum.h>
59
 
60
#if defined __USE_XOPEN || defined __USE_XOPEN2K
61
# ifndef __pid_t_defined
62
typedef __pid_t pid_t;
63
#  define __pid_t_defined
64
#endif
65
#ifdef __USE_XOPEN
66
# endif
67
# ifndef __uid_t_defined
68
typedef __uid_t uid_t;
69
#  define __uid_t_defined
70
# endif
71
#endif  /* Unix98 */
72
 
73
 
74
/* Type of a signal handler.  */
75
typedef void (*__sighandler_t) (int);
76
 
77
/* The X/Open definition of `signal' specifies the SVID semantic.  Use
78
   the additional function `sysv_signal' when X/Open compatibility is
79
   requested.  */
80
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
81
     __THROW;
82
#ifdef __USE_GNU
83
extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
84
     __THROW;
85
#endif
86
 
87
/* Set the handler for the signal SIG to HANDLER, returning the old
88
   handler, or SIG_ERR on error.
89
   By default `signal' has the BSD semantic.  */
90
__BEGIN_NAMESPACE_STD
91
#ifdef __USE_BSD
92
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
93
     __THROW;
94
#else
95
/* Make sure the used `signal' implementation is the SVID version. */
96
# ifdef __REDIRECT_NTH
97
extern __sighandler_t __REDIRECT_NTH (signal,
98
                                      (int __sig, __sighandler_t __handler),
99
                                      __sysv_signal);
100
# else
101
#  define signal __sysv_signal
102
# endif
103
#endif
104
__END_NAMESPACE_STD
105
 
106
#ifdef __USE_XOPEN
107
/* The X/Open definition of `signal' conflicts with the BSD version.
108
   So they defined another function `bsd_signal'.  */
109
extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
110
     __THROW;
111
#endif
112
 
113
/* Send signal SIG to process number PID.  If PID is zero,
114
   send SIG to all processes in the current process's process group.
115
   If PID is < -1, send SIG to all processes in process group - PID.  */
116
#ifdef __USE_POSIX
117
extern int kill (__pid_t __pid, int __sig) __THROW;
118
#endif /* Use POSIX.  */
119
 
120
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
121
/* Send SIG to all processes in process group PGRP.
122
   If PGRP is zero, send SIG to all processes in
123
   the current process's process group.  */
124
extern int killpg (__pid_t __pgrp, int __sig) __THROW;
125
#endif /* Use BSD || X/Open Unix.  */
126
 
127
__BEGIN_NAMESPACE_STD
128
/* Raise signal SIG, i.e., send SIG to yourself.  */
129
extern int raise (int __sig) __THROW;
130
__END_NAMESPACE_STD
131
 
132
#ifdef __USE_SVID
133
/* SVID names for the same things.  */
134
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
135
     __THROW;
136
extern int gsignal (int __sig) __THROW;
137
#endif /* Use SVID.  */
138
 
139
#ifdef __USE_MISC
140
/* Print a message describing the meaning of the given signal number.  */
141
extern void psignal (int __sig, __const char *__s);
142
#endif /* Use misc.  */
143
 
144
 
145
/* The `sigpause' function has two different interfaces.  The original
146
   BSD definition defines the argument as a mask of the signal, while
147
   the more modern interface in X/Open defines it as the signal
148
   number.  We go with the BSD version unless the user explicitly
149
   selects the X/Open version.
150
 
151
   This function is a cancellation point and therefore not marked with
152
   __THROW.  */
153
extern int __sigpause (int __sig_or_mask, int __is_sig);
154
 
155
#ifdef __FAVOR_BSD
156
/* Set the mask of blocked signals to MASK,
157
   wait for a signal to arrive, and then restore the mask.  */
158
extern int sigpause (int __mask) __THROW __attribute_deprecated__;
159
# define sigpause(mask) __sigpause ((mask), 0)
160
#else
161
# ifdef __USE_XOPEN
162
/* Remove a signal from the signal mask and suspend the process.  */
163
#  define sigpause(sig) __sigpause ((sig), 1)
164
# endif
165
#endif
166
 
167
 
168
#ifdef __USE_BSD
169
/* None of the following functions should be used anymore.  They are here
170
   only for compatibility.  A single word (`int') is not guaranteed to be
171
   enough to hold a complete signal mask and therefore these functions
172
   simply do not work in many situations.  Use `sigprocmask' instead.  */
173
 
174
/* Compute mask for signal SIG.  */
175
# define sigmask(sig)   __sigmask(sig)
176
 
177
/* Block signals in MASK, returning the old mask.  */
178
extern int sigblock (int __mask) __THROW __attribute_deprecated__;
179
 
180
/* Set the mask of blocked signals to MASK, returning the old mask.  */
181
extern int sigsetmask (int __mask) __THROW __attribute_deprecated__;
182
 
183
/* Return currently selected signal mask.  */
184
extern int siggetmask (void) __THROW __attribute_deprecated__;
185
#endif /* Use BSD.  */
186
 
187
 
188
#ifdef __USE_MISC
189
# define NSIG   _NSIG
190
#endif
191
 
192
#ifdef __USE_GNU
193
typedef __sighandler_t sighandler_t;
194
#endif
195
 
196
/* 4.4 BSD uses the name `sig_t' for this.  */
197
#ifdef __USE_BSD
198
typedef __sighandler_t sig_t;
199
#endif
200
 
201
#ifdef __USE_POSIX
202
 
203
# ifdef __USE_POSIX199309
204
/* We need `struct timespec' later on.  */
205
#  define __need_timespec
206
#  include <time.h>
207
 
208
/* Get the `siginfo_t' type plus the needed symbols.  */
209
#  include <bits/siginfo.h>
210
# endif
211
 
212
/* Clear all signals from SET.  */
213
extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
214
 
215
/* Set all signals in SET.  */
216
extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1));
217
 
218
/* Add SIGNO to SET.  */
219
extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
220
 
221
/* Remove SIGNO from SET.  */
222
extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
223
 
224
/* Return 1 if SIGNO is in SET, 0 if not.  */
225
extern int sigismember (__const sigset_t *__set, int __signo)
226
     __THROW __nonnull ((1));
227
 
228
# ifdef __USE_GNU
229
/* Return non-empty value is SET is not empty.  */
230
extern int sigisemptyset (__const sigset_t *__set) __THROW __nonnull ((1));
231
 
232
/* Build new signal set by combining the two inputs set using logical AND.  */
233
extern int sigandset (sigset_t *__set, __const sigset_t *__left,
234
                      __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
235
 
236
/* Build new signal set by combining the two inputs set using logical OR.  */
237
extern int sigorset (sigset_t *__set, __const sigset_t *__left,
238
                     __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
239
# endif /* GNU */
240
 
241
/* Get the system-specific definitions of `struct sigaction'
242
   and the `SA_*' and `SIG_*'. constants.  */
243
# include <bits/sigaction.h>
244
 
245
/* Get and/or change the set of blocked signals.  */
246
extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
247
                        sigset_t *__restrict __oset) __THROW;
248
 
249
/* Change the set of blocked signals to SET,
250
   wait until a signal arrives, and restore the set of blocked signals.
251
 
252
   This function is a cancellation point and therefore not marked with
253
   __THROW.  */
254
extern int sigsuspend (__const sigset_t *__set) __nonnull ((1));
255
 
256
/* Get and/or set the action for signal SIG.  */
257
extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
258
                      struct sigaction *__restrict __oact) __THROW;
259
 
260
/* Put in SET all signals that are blocked and waiting to be delivered.  */
261
extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
262
 
263
 
264
/* Select any of pending signals from SET or wait for any to arrive.
265
 
266
   This function is a cancellation point and therefore not marked with
267
   __THROW.  */
268
extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
269
     __nonnull ((1, 2));
270
 
271
# ifdef __USE_POSIX199309
272
/* Select any of pending signals from SET and place information in INFO.
273
 
274
   This function is a cancellation point and therefore not marked with
275
   __THROW.  */
276
extern int sigwaitinfo (__const sigset_t *__restrict __set,
277
                        siginfo_t *__restrict __info) __nonnull ((1));
278
 
279
/* Select any of pending signals from SET and place information in INFO.
280
   Wait the time specified by TIMEOUT if no signal is pending.
281
 
282
   This function is a cancellation point and therefore not marked with
283
   __THROW.  */
284
extern int sigtimedwait (__const sigset_t *__restrict __set,
285
                         siginfo_t *__restrict __info,
286
                         __const struct timespec *__restrict __timeout)
287
     __nonnull ((1));
288
 
289
/* Send signal SIG to the process PID.  Associate data in VAL with the
290
   signal.  */
291
extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
292
     __THROW;
293
# endif /* Use POSIX 199306.  */
294
 
295
#endif /* Use POSIX.  */
296
 
297
#ifdef __USE_BSD
298
 
299
#ifdef __UCLIBC_HAS_SYS_SIGLIST__
300
/* Names of the signals.  This variable exists only for compatibility.
301
   Use `strsignal' instead (see <string.h>).  */
302
#define _sys_siglist sys_siglist
303
extern __const char *__const sys_siglist[_NSIG];
304
#endif /* __UCLIBC_HAS_SYS_SIGLIST__ */
305
 
306
/* Structure passed to `sigvec'.  */
307
struct sigvec
308
  {
309
    __sighandler_t sv_handler;  /* Signal handler.  */
310
    int sv_mask;                /* Mask of signals to be blocked.  */
311
 
312
    int sv_flags;               /* Flags (see below).  */
313
# define sv_onstack     sv_flags /* 4.2 BSD compatibility.  */
314
  };
315
 
316
/* Bits in `sv_flags'.  */
317
# define SV_ONSTACK     (1 << 0)/* Take the signal on the signal stack.  */
318
# define SV_INTERRUPT   (1 << 1)/* Do not restart system calls.  */
319
# define SV_RESETHAND   (1 << 2)/* Reset handler to SIG_DFL on receipt.  */
320
 
321
 
322
/* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member
323
   of VEC.  The signals in `sv_mask' will be blocked while the handler runs.
324
   If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be
325
   reset to SIG_DFL before `sv_handler' is entered.  If OVEC is non-NULL,
326
   it is filled in with the old information for SIG.  */
327
extern int sigvec (int __sig, __const struct sigvec *__vec,
328
                   struct sigvec *__ovec) __THROW;
329
 
330
 
331
/* Get machine-dependent `struct sigcontext' and signal subcodes.  */
332
# include <bits/sigcontext.h>
333
 
334
/* Restore the state saved in SCP.  */
335
extern int sigreturn (struct sigcontext *__scp) __THROW;
336
 
337
#endif /*  use BSD.  */
338
 
339
 
340
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
341
 
342
/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
343
   (causing them to fail with EINTR); if INTERRUPT is zero, make system
344
   calls be restarted after signal SIG.  */
345
extern int siginterrupt (int __sig, int __interrupt) __THROW;
346
 
347
# include <bits/sigstack.h>
348
# ifdef __USE_XOPEN
349
/* This will define `ucontext_t' and `mcontext_t'.  */
350
#  include <ucontext.h>
351
# endif
352
 
353
/* Run signals handlers on the stack specified by SS (if not NULL).
354
   If OSS is not NULL, it is filled in with the old signal stack status.
355
   This interface is obsolete and on many platform not implemented.  */
356
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
357
     __THROW __attribute_deprecated__;
358
 
359
/* Alternate signal handler stack interface.
360
   This interface should always be preferred over `sigstack'.  */
361
extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
362
                        struct sigaltstack *__restrict __oss) __THROW;
363
 
364
#endif /* use BSD or X/Open Unix.  */
365
 
366
#ifdef __USE_XOPEN_EXTENDED
367
/* Simplified interface for signal management.  */
368
 
369
/* Add SIG to the calling process' signal mask.  */
370
extern int sighold (int __sig) __THROW;
371
 
372
/* Remove SIG from the calling process' signal mask.  */
373
extern int sigrelse (int __sig) __THROW;
374
 
375
/* Set the disposition of SIG to SIG_IGN.  */
376
extern int sigignore (int __sig) __THROW;
377
 
378
/* Set the disposition of SIG.  */
379
extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;
380
#endif
381
 
382
#if defined __UCLIBC_HAS_THREADS__ && (defined __USE_POSIX199506 || defined __USE_UNIX98)
383
/* Some of the functions for handling signals in threaded programs must
384
   be defined here.  */
385
# include <bits/pthreadtypes.h>
386
# include <bits/sigthread.h>
387
#endif /* use Unix98 */
388
 
389
/* The following functions are used internally in the C library and in
390
   other code which need deep insights.  */
391
 
392
/* Return number of available real-time signal with highest priority.  */
393
extern int __libc_current_sigrtmin (void) __THROW;
394
/* Return number of available real-time signal with lowest priority.  */
395
extern int __libc_current_sigrtmax (void) __THROW;
396
 
397
#endif /* signal.h  */
398
 
399
__END_DECLS
400
 
401
#endif /* not signal.h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.