1 : /*
2 : * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 : *
4 : * @APPLE_LICENSE_HEADER_START@
5 : *
6 : * This file contains Original Code and/or Modifications of Original Code
7 : * as defined in and that are subject to the Apple Public Source License
8 : * Version 2.0 (the 'License'). You may not use this file except in
9 : * compliance with the License. Please obtain a copy of the License at
10 : * http://www.opensource.apple.com/apsl/ and read it before using this
11 : * file.
12 : *
13 : * The Original Code and all software distributed under the License are
14 : * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 : * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 : * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 : * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 : * Please see the License for the specific language governing rights and
19 : * limitations under the License.
20 : *
21 : * @APPLE_LICENSE_HEADER_END@
22 : */
23 : /*-
24 : * Copyright (c) 1991, 1993
25 : * The Regents of the University of California. All rights reserved.
26 : *
27 : * Redistribution and use in source and binary forms, with or without
28 : * modification, are permitted provided that the following conditions
29 : * are met:
30 : * 1. Redistributions of source code must retain the above copyright
31 : * notice, this list of conditions and the following disclaimer.
32 : * 2. Redistributions in binary form must reproduce the above copyright
33 : * notice, this list of conditions and the following disclaimer in the
34 : * documentation and/or other materials provided with the distribution.
35 : * 3. All advertising materials mentioning features or use of this software
36 : * must display the following acknowledgement:
37 : * This product includes software developed by the University of
38 : * California, Berkeley and its contributors.
39 : * 4. Neither the name of the University nor the names of its contributors
40 : * may be used to endorse or promote products derived from this software
41 : * without specific prior written permission.
42 : *
43 : * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
44 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46 : * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
47 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53 : * SUCH DAMAGE.
54 : *
55 : * @(#)signal.h 8.3 (Berkeley) 3/30/94
56 : */
57 :
58 : #ifndef _USER_SIGNAL_H
59 : #define _USER_SIGNAL_H
60 :
61 : #include <sys/cdefs.h>
62 : #include <_types.h>
63 : #include <sys/signal.h>
64 :
65 : #ifndef _PTHREAD_T
66 : typedef __darwin_pthread_t pthread_t;
67 : #define _PTHREAD_T
68 : #endif
69 :
70 : #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
71 : extern __const char *__const sys_signame[NSIG];
72 : extern __const char *__const sys_siglist[NSIG];
73 : #endif
74 :
75 : __BEGIN_DECLS
76 : int raise(int);
77 : __END_DECLS
78 :
79 : #ifndef _ANSI_SOURCE
80 : __BEGIN_DECLS
81 : void (*bsd_signal(int, void (*)(int)))(int);
82 : int kill(pid_t, int) __DARWIN_ALIAS(kill);
83 : int killpg(pid_t, int) __DARWIN_ALIAS(killpg);
84 : int pthread_kill(pthread_t, int);
85 : int pthread_sigmask(int, const sigset_t *, sigset_t *) __DARWIN_ALIAS(pthread_sigmask);
86 : int sigaction(int, const struct sigaction * __restrict,
87 : struct sigaction * __restrict);
88 : int sigaddset(sigset_t *, int);
89 : int sigaltstack(const stack_t * __restrict, stack_t * __restrict) __DARWIN_ALIAS(sigaltstack);
90 : int sigdelset(sigset_t *, int);
91 : int sigemptyset(sigset_t *);
92 : int sigfillset(sigset_t *);
93 : int sighold(int);
94 : int sigignore(int);
95 : int siginterrupt(int, int);
96 : int sigismember(const sigset_t *, int);
97 : int sigpause(int) __DARWIN_ALIAS_C(sigpause);
98 : int sigpending(sigset_t *);
99 : int sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict);
100 : int sigrelse(int);
101 : void (*sigset(int, void (*)(int)))(int);
102 : int sigsuspend(const sigset_t *) __DARWIN_ALIAS_C(sigsuspend);
103 : int sigwait(const sigset_t * __restrict, int * __restrict) __DARWIN_ALIAS_C(sigwait);
104 : #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
105 : void psignal(unsigned int, const char *);
106 : int sigblock(int);
107 : int sigsetmask(int);
108 : int sigvec(int, struct sigvec *, struct sigvec *);
109 : #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
110 : __END_DECLS
111 :
112 : /* List definitions after function declarations, or Reiser cpp gets upset. */
113 : #if defined(__i386__) || defined(__x86_64__)
114 : /* The left shift operator on intel is modulo 32 */
115 : static __inline int
116 : __sigbits(int __signo)
117 98 : {
118 98 : return __signo > __DARWIN_NSIG ? 0 : (1 << (__signo - 1));
119 : }
120 : #else /* !__i386__ && !__x86_64__ */
121 : #define __sigbits(signo) (1 << ((signo) - 1))
122 : #endif /* __i386__ || __x86_64__ */
123 :
124 : #define sigaddset(set, signo) (*(set) |= __sigbits(signo), 0)
125 : #define sigdelset(set, signo) (*(set) &= ~__sigbits(signo), 0)
126 : #define sigismember(set, signo) ((*(set) & __sigbits(signo)) != 0)
127 : #define sigemptyset(set) (*(set) = 0, 0)
128 : #define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
129 : #endif /* !_ANSI_SOURCE */
130 :
131 : #endif /* !_USER_SIGNAL_H */
|