Annotation of src/include/signal.h, Revision 1.17
1.17 ! kleink 1: /* $NetBSD: signal.h,v 1.16 1998/09/21 19:14:43 thorpej Exp $ */
1.3 cgd 2:
1.1 cgd 3: /*-
4: * Copyright (c) 1991, 1993
5: * The Regents of the University of California. All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: * 3. All advertising materials mentioning features or use of this software
16: * must display the following acknowledgement:
17: * This product includes software developed by the University of
18: * California, Berkeley and its contributors.
19: * 4. Neither the name of the University nor the names of its contributors
20: * may be used to endorse or promote products derived from this software
21: * without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: *
35: * @(#)signal.h 8.3 (Berkeley) 3/30/94
36: */
37:
1.12 kleink 38: #ifndef _SIGNAL_H_
39: #define _SIGNAL_H_
1.1 cgd 40:
41: #include <sys/cdefs.h>
1.12 kleink 42: #include <sys/featuretest.h>
1.1 cgd 43:
1.5 jtc 44: #if !defined(_ANSI_SOURCE)
45: #include <sys/types.h>
46: #endif
1.9 kleink 47:
48: #include <sys/signal.h>
1.5 jtc 49:
1.12 kleink 50: #if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
51: !defined(_XOPEN_SOURCE)
1.16 thorpej 52: /* XXX XXX XXX */
53: extern __const char *__const sys_signame[SIGUSR2+1];
54: extern __const char *__const sys_siglist[SIGUSR2+1];
1.1 cgd 55: #endif
56:
57: __BEGIN_DECLS
58: int raise __P((int));
59: #ifndef _ANSI_SOURCE
60: int kill __P((pid_t, int));
1.13 mycroft 61:
1.15 thorpej 62: #ifdef __LIBC12_SOURCE__
1.13 mycroft 63: int sigaction __P((int, const struct sigaction13 *, struct sigaction13 *));
64: int __sigaction14 __P((int, const struct sigaction *, struct sigaction *));
65: int sigaddset __P((sigset13_t *, int));
66: int __sigaddset14 __P((sigset_t *, int));
67: int sigdelset __P((sigset13_t *, int));
68: int __sigdelset14 __P((sigset_t *, int));
69: int sigemptyset __P((sigset13_t *));
70: int __sigemptyset14 __P((sigset_t *));
71: int sigfillset __P((sigset13_t *));
72: int __sigfillset14 __P((sigset_t *));
73: int sigismember __P((const sigset13_t *, int));
74: int __sigismember14 __P((const sigset_t *, int));
75: int sigpending __P((sigset13_t *));
76: int __sigpending14 __P((sigset_t *));
77: int sigprocmask __P((int, const sigset13_t *, sigset13_t *));
78: int __sigprocmask14 __P((int, const sigset_t *, sigset_t *));
79: int sigsuspend __P((const sigset13_t *));
80: int __sigsuspend14 __P((const sigset_t *));
1.15 thorpej 81: #else /* !__LIBC12_SOURCE__ */
1.13 mycroft 82: int sigaction __P((int, const struct sigaction *, struct sigaction *)) __RENAME(__sigaction14);
83: int sigaddset __P((sigset_t *, int)) __RENAME(__sigaddset14);
84: int sigdelset __P((sigset_t *, int)) __RENAME(__sigdelset14);
85: int sigemptyset __P((sigset_t *)) __RENAME(__sigemptyset14);
86: int sigfillset __P((sigset_t *)) __RENAME(__sigfillset14);
87: int sigismember __P((const sigset_t *, int)) __RENAME(__sigismember14);
88: int sigpending __P((sigset_t *)) __RENAME(__sigpending14);
89: int sigprocmask __P((int, const sigset_t *, sigset_t *)) __RENAME(__sigprocmask14);
90: int sigsuspend __P((const sigset_t *)) __RENAME(__sigsuspend14);
1.4 jtc 91:
92: #if defined(__GNUC__) && defined(__STDC__)
1.14 mycroft 93: extern __inline int
94: sigaddset(sigset_t *set, int signo)
95: {
1.17 ! kleink 96: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 97: defined(_REENTRANT)
! 98: extern int *__errno __P((void));
! 99: #else
1.4 jtc 100: extern int errno;
1.17 ! kleink 101: #endif
1.4 jtc 102:
1.6 jtc 103: if (signo <= 0 || signo >= _NSIG) {
1.17 ! kleink 104: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 105: defined(_REENTRANT)
! 106: *__errno() = 22; /* EINVAL */
! 107: #else
1.4 jtc 108: errno = 22; /* EINVAL */
1.17 ! kleink 109: #endif
1.14 mycroft 110: return (-1);
1.4 jtc 111: }
1.13 mycroft 112: __sigaddset(set, signo);
1.4 jtc 113: return (0);
114: }
115:
1.14 mycroft 116: extern __inline int
117: sigdelset(sigset_t *set, int signo)
118: {
1.17 ! kleink 119: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 120: defined(_REENTRANT)
! 121: extern int *__errno __P((void));
! 122: #else
1.4 jtc 123: extern int errno;
1.17 ! kleink 124: #endif
1.4 jtc 125:
1.6 jtc 126: if (signo <= 0 || signo >= _NSIG) {
1.17 ! kleink 127: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 128: defined(_REENTRANT)
! 129: *__errno() = 22; /* EINVAL */
! 130: #else
1.4 jtc 131: errno = 22; /* EINVAL */
1.17 ! kleink 132: #endif
1.14 mycroft 133: return (-1);
1.4 jtc 134: }
1.13 mycroft 135: __sigdelset(set, signo);
1.4 jtc 136: return (0);
137: }
138:
1.14 mycroft 139: extern __inline int
140: sigismember(const sigset_t *set, int signo)
141: {
1.17 ! kleink 142: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 143: defined(_REENTRANT)
! 144: extern int *__errno __P((void));
! 145: #else
1.4 jtc 146: extern int errno;
1.17 ! kleink 147: #endif
1.4 jtc 148:
1.6 jtc 149: if (signo <= 0 || signo >= _NSIG) {
1.17 ! kleink 150: #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
! 151: defined(_REENTRANT)
! 152: *__errno() = 22; /* EINVAL */
! 153: #else
1.4 jtc 154: errno = 22; /* EINVAL */
1.17 ! kleink 155: #endif
1.14 mycroft 156: return (-1);
1.4 jtc 157: }
1.13 mycroft 158: return (__sigismember(set, signo));
1.4 jtc 159: }
1.13 mycroft 160: #endif /* __GNUC__ && __STDC__ */
1.4 jtc 161:
162: /* List definitions after function declarations, or Reiser cpp gets upset. */
1.13 mycroft 163: #define sigemptyset(set) (__sigemptyset(set), 0)
164: #define sigfillset(set) (__sigfillset(set), 0)
1.15 thorpej 165: #endif /* !__LIBC12_SOURCE__ */
1.5 jtc 166:
1.12 kleink 167: #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
168: (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
169: (_XOPEN_SOURCE - 0) >= 500
1.1 cgd 170: int killpg __P((pid_t, int));
171: int siginterrupt __P((int, int));
172: int sigpause __P((int));
173: int sigstack __P((const struct sigstack *, struct sigstack *));
1.11 kleink 174: #ifdef __LIBC12_SOURCE__
175: int sigaltstack __P((const struct sigaltstack13 *, struct sigaltstack13 *));
176: int __sigaltstack14 __P((const stack_t *, stack_t *));
177: #else
178: int sigaltstack __P((const stack_t *, stack_t *)) __RENAME(__sigaltstack14);
179: #endif
1.12 kleink 180: #endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || ... */
181:
182: #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)
183: void psignal __P((unsigned int, const char *));
184: int sigblock __P((int));
1.15 thorpej 185: #ifdef __LIBC12_SOURCE__
1.13 mycroft 186: int sigreturn __P((struct sigcontext13 *));
187: int __sigreturn14 __P((struct sigcontext *));
188: #else
189: int sigreturn __P((struct sigcontext *)) __RENAME(__sigreturn14);
190: #endif
1.12 kleink 191: int sigsetmask __P((int));
192: int sigvec __P((int, struct sigvec *, struct sigvec *));
193: #endif /* !_POSIX_C_SOURCE && !_XOPEN_SOURCE */
194:
1.1 cgd 195: #endif /* !_ANSI_SOURCE */
196: __END_DECLS
197:
1.12 kleink 198: #endif /* !_SIGNAL_H_ */
CVSweb <webmaster@jp.NetBSD.org>