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#include <sys/_types/_pthread_t.h> 65 66#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) 67extern __const char *__const sys_signame[NSIG]; 68extern __const char *__const sys_siglist[NSIG]; 69#endif 70 71__BEGIN_DECLS 72int raise(int); 73__END_DECLS 74 75#ifndef _ANSI_SOURCE 76__BEGIN_DECLS 77void (*bsd_signal(int, void (*)(int)))(int); 78//Begin-Libc 79#ifndef LIBC_ALIAS_KILL 80//End-Libc 81int kill(pid_t, int) __DARWIN_ALIAS(kill); 82//Begin-Libc 83#else /* LIBC_ALIAS_KILL */ 84int kill(pid_t, int) LIBC_ALIAS(kill); 85#endif /* !LIBC_ALIAS_KILL */ 86//End-Libc 87//Begin-Libc 88#ifndef LIBC_ALIAS_KILLPG 89//End-Libc 90int killpg(pid_t, int) __DARWIN_ALIAS(killpg); 91//Begin-Libc 92#else /* LIBC_ALIAS_KILLPG */ 93int killpg(pid_t, int) LIBC_ALIAS(killpg); 94#endif /* !LIBC_ALIAS_KILLPG */ 95//End-Libc 96int pthread_kill(pthread_t, int); 97//Begin-Libc 98#ifndef LIBC_ALIAS_PTHREAD_SIGMASK 99//End-Libc 100int pthread_sigmask(int, const sigset_t *, sigset_t *) __DARWIN_ALIAS(pthread_sigmask); 101//Begin-Libc 102#else /* LIBC_ALIAS_PTHREAD_SIGMASK */ 103int pthread_sigmask(int, const sigset_t *, sigset_t *) LIBC_ALIAS(pthread_sigmask); 104#endif /* !LIBC_ALIAS_PTHREAD_SIGMASK */ 105//End-Libc 106int sigaction(int, const struct sigaction * __restrict, 107 struct sigaction * __restrict); 108int sigaddset(sigset_t *, int); 109//Begin-Libc 110#ifndef LIBC_ALIAS_SIGALTSTACK 111//End-Libc 112int sigaltstack(const stack_t * __restrict, stack_t * __restrict) __DARWIN_ALIAS(sigaltstack); 113//Begin-Libc 114#else /* LIBC_ALIAS_SIGALTSTACK */ 115int sigaltstack(const stack_t * __restrict, stack_t * __restrict) LIBC_ALIAS(sigaltstack); 116#endif /* !LIBC_ALIAS_SIGALTSTACK */ 117//End-Libc 118int sigdelset(sigset_t *, int); 119int sigemptyset(sigset_t *); 120int sigfillset(sigset_t *); 121int sighold(int); 122int sigignore(int); 123int siginterrupt(int, int); 124int sigismember(const sigset_t *, int); 125//Begin-Libc 126#ifndef LIBC_ALIAS_SIGPAUSE 127//End-Libc 128int sigpause(int) __DARWIN_ALIAS_C(sigpause); 129//Begin-Libc 130#else /* LIBC_ALIAS_SIGPAUSE */ 131int sigpause(int) LIBC_ALIAS_C(sigpause); 132#endif /* !LIBC_ALIAS_SIGPAUSE */ 133//End-Libc 134int sigpending(sigset_t *); 135int sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict); 136int sigrelse(int); 137void (*sigset(int, void (*)(int)))(int); 138//Begin-Libc 139#ifndef LIBC_ALIAS_SIGSUSPEND 140//End-Libc 141int sigsuspend(const sigset_t *) __DARWIN_ALIAS_C(sigsuspend); 142//Begin-Libc 143#else /* LIBC_ALIAS_SIGSUSPEND */ 144int sigsuspend(const sigset_t *) LIBC_ALIAS_C(sigsuspend); 145#endif /* !LIBC_ALIAS_SIGSUSPEND */ 146//End-Libc 147//Begin-Libc 148#ifndef LIBC_ALIAS_SIGWAIT 149//End-Libc 150int sigwait(const sigset_t * __restrict, int * __restrict) __DARWIN_ALIAS_C(sigwait); 151//Begin-Libc 152#else /* LIBC_ALIAS_SIGWAIT */ 153int sigwait(const sigset_t * __restrict, int * __restrict) LIBC_ALIAS_C(sigwait); 154#endif /* !LIBC_ALIAS_SIGWAIT */ 155//End-Libc 156#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 157void psignal(unsigned int, const char *); 158int sigblock(int); 159int sigsetmask(int); 160int sigvec(int, struct sigvec *, struct sigvec *); 161#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 162__END_DECLS 163 164/* List definitions after function declarations, or Reiser cpp gets upset. */ 165#if defined(__i386__) || defined(__x86_64__) 166/* The left shift operator on intel is modulo 32 */ 167__header_always_inline int 168__sigbits(int __signo) 169{ 170 return __signo > __DARWIN_NSIG ? 0 : (1 << (__signo - 1)); 171} 172#else /* !__i386__ && !__x86_64__ */ 173#define __sigbits(signo) (1 << ((signo) - 1)) 174#endif /* __i386__ || __x86_64__ */ 175 176#define sigaddset(set, signo) (*(set) |= __sigbits(signo), 0) 177#define sigdelset(set, signo) (*(set) &= ~__sigbits(signo), 0) 178#define sigismember(set, signo) ((*(set) & __sigbits(signo)) != 0) 179#define sigemptyset(set) (*(set) = 0, 0) 180#define sigfillset(set) (*(set) = ~(sigset_t)0, 0) 181#endif /* !_ANSI_SOURCE */ 182 183#endif /* !_USER_SIGNAL_H */ 184