1*aca3beaaSApple OSS Distributions /* 2*aca3beaaSApple OSS Distributions * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved. 3*aca3beaaSApple OSS Distributions * 4*aca3beaaSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*aca3beaaSApple OSS Distributions * 6*aca3beaaSApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*aca3beaaSApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*aca3beaaSApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*aca3beaaSApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*aca3beaaSApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*aca3beaaSApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*aca3beaaSApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*aca3beaaSApple OSS Distributions * terms of an Apple operating system software license agreement. 14*aca3beaaSApple OSS Distributions * 15*aca3beaaSApple OSS Distributions * Please obtain a copy of the License at 16*aca3beaaSApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*aca3beaaSApple OSS Distributions * 18*aca3beaaSApple OSS Distributions * The Original Code and all software distributed under the License are 19*aca3beaaSApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*aca3beaaSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*aca3beaaSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*aca3beaaSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*aca3beaaSApple OSS Distributions * Please see the License for the specific language governing rights and 24*aca3beaaSApple OSS Distributions * limitations under the License. 25*aca3beaaSApple OSS Distributions * 26*aca3beaaSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*aca3beaaSApple OSS Distributions */ 28*aca3beaaSApple OSS Distributions /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 29*aca3beaaSApple OSS Distributions /* 30*aca3beaaSApple OSS Distributions * Copyright (c) 1982, 1986, 1989, 1991, 1993 31*aca3beaaSApple OSS Distributions * The Regents of the University of California. All rights reserved. 32*aca3beaaSApple OSS Distributions * (c) UNIX System Laboratories, Inc. 33*aca3beaaSApple OSS Distributions * All or some portions of this file are derived from material licensed 34*aca3beaaSApple OSS Distributions * to the University of California by American Telephone and Telegraph 35*aca3beaaSApple OSS Distributions * Co. or Unix System Laboratories, Inc. and are reproduced herein with 36*aca3beaaSApple OSS Distributions * the permission of UNIX System Laboratories, Inc. 37*aca3beaaSApple OSS Distributions * 38*aca3beaaSApple OSS Distributions * Redistribution and use in source and binary forms, with or without 39*aca3beaaSApple OSS Distributions * modification, are permitted provided that the following conditions 40*aca3beaaSApple OSS Distributions * are met: 41*aca3beaaSApple OSS Distributions * 1. Redistributions of source code must retain the above copyright 42*aca3beaaSApple OSS Distributions * notice, this list of conditions and the following disclaimer. 43*aca3beaaSApple OSS Distributions * 2. Redistributions in binary form must reproduce the above copyright 44*aca3beaaSApple OSS Distributions * notice, this list of conditions and the following disclaimer in the 45*aca3beaaSApple OSS Distributions * documentation and/or other materials provided with the distribution. 46*aca3beaaSApple OSS Distributions * 3. All advertising materials mentioning features or use of this software 47*aca3beaaSApple OSS Distributions * must display the following acknowledgement: 48*aca3beaaSApple OSS Distributions * This product includes software developed by the University of 49*aca3beaaSApple OSS Distributions * California, Berkeley and its contributors. 50*aca3beaaSApple OSS Distributions * 4. Neither the name of the University nor the names of its contributors 51*aca3beaaSApple OSS Distributions * may be used to endorse or promote products derived from this software 52*aca3beaaSApple OSS Distributions * without specific prior written permission. 53*aca3beaaSApple OSS Distributions * 54*aca3beaaSApple OSS Distributions * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 55*aca3beaaSApple OSS Distributions * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 56*aca3beaaSApple OSS Distributions * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 57*aca3beaaSApple OSS Distributions * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 58*aca3beaaSApple OSS Distributions * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 59*aca3beaaSApple OSS Distributions * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 60*aca3beaaSApple OSS Distributions * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 61*aca3beaaSApple OSS Distributions * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 62*aca3beaaSApple OSS Distributions * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 63*aca3beaaSApple OSS Distributions * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 64*aca3beaaSApple OSS Distributions * SUCH DAMAGE. 65*aca3beaaSApple OSS Distributions * 66*aca3beaaSApple OSS Distributions * @(#)signal.h 8.2 (Berkeley) 1/21/94 67*aca3beaaSApple OSS Distributions */ 68*aca3beaaSApple OSS Distributions 69*aca3beaaSApple OSS Distributions #ifndef _SYS_SIGNAL_H_ 70*aca3beaaSApple OSS Distributions #define _SYS_SIGNAL_H_ 71*aca3beaaSApple OSS Distributions 72*aca3beaaSApple OSS Distributions #include <sys/cdefs.h> 73*aca3beaaSApple OSS Distributions #include <sys/appleapiopts.h> 74*aca3beaaSApple OSS Distributions #include <Availability.h> 75*aca3beaaSApple OSS Distributions 76*aca3beaaSApple OSS Distributions #define __DARWIN_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */ 77*aca3beaaSApple OSS Distributions 78*aca3beaaSApple OSS Distributions #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) 79*aca3beaaSApple OSS Distributions #define NSIG __DARWIN_NSIG 80*aca3beaaSApple OSS Distributions #endif 81*aca3beaaSApple OSS Distributions 82*aca3beaaSApple OSS Distributions #include <machine/signal.h> /* sigcontext; codes for SIGILL, SIGFPE */ 83*aca3beaaSApple OSS Distributions 84*aca3beaaSApple OSS Distributions #define SIGHUP 1 /* hangup */ 85*aca3beaaSApple OSS Distributions #define SIGINT 2 /* interrupt */ 86*aca3beaaSApple OSS Distributions #define SIGQUIT 3 /* quit */ 87*aca3beaaSApple OSS Distributions #define SIGILL 4 /* illegal instruction (not reset when caught) */ 88*aca3beaaSApple OSS Distributions #define SIGTRAP 5 /* trace trap (not reset when caught) */ 89*aca3beaaSApple OSS Distributions #define SIGABRT 6 /* abort() */ 90*aca3beaaSApple OSS Distributions #if (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE)) 91*aca3beaaSApple OSS Distributions #define SIGPOLL 7 /* pollable event ([XSR] generated, not supported) */ 92*aca3beaaSApple OSS Distributions #else /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 93*aca3beaaSApple OSS Distributions #define SIGIOT SIGABRT /* compatibility */ 94*aca3beaaSApple OSS Distributions #define SIGEMT 7 /* EMT instruction */ 95*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 96*aca3beaaSApple OSS Distributions #define SIGFPE 8 /* floating point exception */ 97*aca3beaaSApple OSS Distributions #define SIGKILL 9 /* kill (cannot be caught or ignored) */ 98*aca3beaaSApple OSS Distributions #define SIGBUS 10 /* bus error */ 99*aca3beaaSApple OSS Distributions #define SIGSEGV 11 /* segmentation violation */ 100*aca3beaaSApple OSS Distributions #define SIGSYS 12 /* bad argument to system call */ 101*aca3beaaSApple OSS Distributions #define SIGPIPE 13 /* write on a pipe with no one to read it */ 102*aca3beaaSApple OSS Distributions #define SIGALRM 14 /* alarm clock */ 103*aca3beaaSApple OSS Distributions #define SIGTERM 15 /* software termination signal from kill */ 104*aca3beaaSApple OSS Distributions #define SIGURG 16 /* urgent condition on IO channel */ 105*aca3beaaSApple OSS Distributions #define SIGSTOP 17 /* sendable stop signal not from tty */ 106*aca3beaaSApple OSS Distributions #define SIGTSTP 18 /* stop signal from tty */ 107*aca3beaaSApple OSS Distributions #define SIGCONT 19 /* continue a stopped process */ 108*aca3beaaSApple OSS Distributions #define SIGCHLD 20 /* to parent on child stop or exit */ 109*aca3beaaSApple OSS Distributions #define SIGTTIN 21 /* to readers pgrp upon background tty read */ 110*aca3beaaSApple OSS Distributions #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ 111*aca3beaaSApple OSS Distributions #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) 112*aca3beaaSApple OSS Distributions #define SIGIO 23 /* input/output possible signal */ 113*aca3beaaSApple OSS Distributions #endif 114*aca3beaaSApple OSS Distributions #define SIGXCPU 24 /* exceeded CPU time limit */ 115*aca3beaaSApple OSS Distributions #define SIGXFSZ 25 /* exceeded file size limit */ 116*aca3beaaSApple OSS Distributions #define SIGVTALRM 26 /* virtual time alarm */ 117*aca3beaaSApple OSS Distributions #define SIGPROF 27 /* profiling time alarm */ 118*aca3beaaSApple OSS Distributions #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) 119*aca3beaaSApple OSS Distributions #define SIGWINCH 28 /* window size changes */ 120*aca3beaaSApple OSS Distributions #define SIGINFO 29 /* information request */ 121*aca3beaaSApple OSS Distributions #endif 122*aca3beaaSApple OSS Distributions #define SIGUSR1 30 /* user defined signal 1 */ 123*aca3beaaSApple OSS Distributions #define SIGUSR2 31 /* user defined signal 2 */ 124*aca3beaaSApple OSS Distributions 125*aca3beaaSApple OSS Distributions #if defined(_ANSI_SOURCE) || __DARWIN_UNIX03 || defined(__cplusplus) 126*aca3beaaSApple OSS Distributions /* 127*aca3beaaSApple OSS Distributions * Language spec sez we must list exactly one parameter, even though we 128*aca3beaaSApple OSS Distributions * actually supply three. Ugh! 129*aca3beaaSApple OSS Distributions * SIG_HOLD is chosen to avoid KERN_SIG_* values in <sys/signalvar.h> 130*aca3beaaSApple OSS Distributions */ 131*aca3beaaSApple OSS Distributions #define SIG_DFL (void (*)(int))0 132*aca3beaaSApple OSS Distributions #define SIG_IGN (void (*)(int))1 133*aca3beaaSApple OSS Distributions #define SIG_HOLD (void (*)(int))5 134*aca3beaaSApple OSS Distributions #define SIG_ERR ((void (*)(int))-1) 135*aca3beaaSApple OSS Distributions #else 136*aca3beaaSApple OSS Distributions /* DO NOT REMOVE THE COMMENTED OUT int: fixincludes needs to see them */ 137*aca3beaaSApple OSS Distributions #define SIG_DFL (void (*)( /*int*/ ))0 138*aca3beaaSApple OSS Distributions #define SIG_IGN (void (*)( /*int*/ ))1 139*aca3beaaSApple OSS Distributions #define SIG_HOLD (void (*)( /*int*/ ))5 140*aca3beaaSApple OSS Distributions #define SIG_ERR ((void (*)( /*int*/ ))-1) 141*aca3beaaSApple OSS Distributions #endif 142*aca3beaaSApple OSS Distributions 143*aca3beaaSApple OSS Distributions #ifndef _ANSI_SOURCE 144*aca3beaaSApple OSS Distributions #include <sys/_types.h> 145*aca3beaaSApple OSS Distributions 146*aca3beaaSApple OSS Distributions #include <machine/_mcontext.h> 147*aca3beaaSApple OSS Distributions 148*aca3beaaSApple OSS Distributions #ifndef KERNEL 149*aca3beaaSApple OSS Distributions #include <sys/_pthread/_pthread_attr_t.h> 150*aca3beaaSApple OSS Distributions #endif /* KERNEL */ 151*aca3beaaSApple OSS Distributions 152*aca3beaaSApple OSS Distributions #include <sys/_types/_sigaltstack.h> 153*aca3beaaSApple OSS Distributions #include <sys/_types/_ucontext.h> 154*aca3beaaSApple OSS Distributions 155*aca3beaaSApple OSS Distributions #include <sys/_types/_pid_t.h> 156*aca3beaaSApple OSS Distributions #include <sys/_types/_sigset_t.h> 157*aca3beaaSApple OSS Distributions #include <sys/_types/_size_t.h> 158*aca3beaaSApple OSS Distributions #include <sys/_types/_uid_t.h> 159*aca3beaaSApple OSS Distributions 160*aca3beaaSApple OSS Distributions union sigval { 161*aca3beaaSApple OSS Distributions /* Members as suggested by Annex C of POSIX 1003.1b. */ 162*aca3beaaSApple OSS Distributions int sival_int; 163*aca3beaaSApple OSS Distributions void *sival_ptr; 164*aca3beaaSApple OSS Distributions }; 165*aca3beaaSApple OSS Distributions 166*aca3beaaSApple OSS Distributions #define SIGEV_NONE 0 /* No async notification */ 167*aca3beaaSApple OSS Distributions #define SIGEV_SIGNAL 1 /* aio - completion notification */ 168*aca3beaaSApple OSS Distributions #define SIGEV_THREAD 3 /* [NOTIMP] [RTS] call notification function */ 169*aca3beaaSApple OSS Distributions 170*aca3beaaSApple OSS Distributions #ifndef KERNEL 171*aca3beaaSApple OSS Distributions struct sigevent { 172*aca3beaaSApple OSS Distributions int sigev_notify; /* Notification type */ 173*aca3beaaSApple OSS Distributions int sigev_signo; /* Signal number */ 174*aca3beaaSApple OSS Distributions union sigval sigev_value; /* Signal value */ 175*aca3beaaSApple OSS Distributions void (*sigev_notify_function)(union sigval); /* Notification function */ 176*aca3beaaSApple OSS Distributions pthread_attr_t *sigev_notify_attributes; /* Notification attributes */ 177*aca3beaaSApple OSS Distributions }; 178*aca3beaaSApple OSS Distributions #endif /* KERNEL */ 179*aca3beaaSApple OSS Distributions 180*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 181*aca3beaaSApple OSS Distributions 182*aca3beaaSApple OSS Distributions union user64_sigval { 183*aca3beaaSApple OSS Distributions struct { 184*aca3beaaSApple OSS Distributions uint32_t pad; /* assumes Motorola byte order */ 185*aca3beaaSApple OSS Distributions int32_t sival_int; 186*aca3beaaSApple OSS Distributions } size_equivalent; 187*aca3beaaSApple OSS Distributions user64_addr_t sival_ptr; 188*aca3beaaSApple OSS Distributions }; 189*aca3beaaSApple OSS Distributions 190*aca3beaaSApple OSS Distributions union user32_sigval { 191*aca3beaaSApple OSS Distributions /* Members as suggested by Annex C of POSIX 1003.1b. */ 192*aca3beaaSApple OSS Distributions int32_t sival_int; 193*aca3beaaSApple OSS Distributions user32_addr_t sival_ptr; 194*aca3beaaSApple OSS Distributions }; 195*aca3beaaSApple OSS Distributions 196*aca3beaaSApple OSS Distributions union user_sigval { 197*aca3beaaSApple OSS Distributions struct { 198*aca3beaaSApple OSS Distributions uint32_t pad; /* assumes Motorola byte order */ 199*aca3beaaSApple OSS Distributions int32_t sival_int; 200*aca3beaaSApple OSS Distributions } size_equivalent; 201*aca3beaaSApple OSS Distributions user_addr_t sival_ptr; 202*aca3beaaSApple OSS Distributions }; 203*aca3beaaSApple OSS Distributions 204*aca3beaaSApple OSS Distributions struct user64_sigevent { 205*aca3beaaSApple OSS Distributions int sigev_notify; /* Notification type */ 206*aca3beaaSApple OSS Distributions int sigev_signo; /* Signal number */ 207*aca3beaaSApple OSS Distributions union user64_sigval sigev_value; /* Signal value */ 208*aca3beaaSApple OSS Distributions user64_addr_t sigev_notify_function; /* Notify function */ 209*aca3beaaSApple OSS Distributions user64_addr_t sigev_notify_attributes; /* Notify attributes */ 210*aca3beaaSApple OSS Distributions }; 211*aca3beaaSApple OSS Distributions 212*aca3beaaSApple OSS Distributions struct user32_sigevent { 213*aca3beaaSApple OSS Distributions int sigev_notify; /* Notification type */ 214*aca3beaaSApple OSS Distributions int sigev_signo; /* Signal number */ 215*aca3beaaSApple OSS Distributions union user32_sigval sigev_value; /* Signal value */ 216*aca3beaaSApple OSS Distributions user32_addr_t sigev_notify_function; /* Notify function */ 217*aca3beaaSApple OSS Distributions user32_addr_t sigev_notify_attributes; /* Notify attributes */ 218*aca3beaaSApple OSS Distributions }; 219*aca3beaaSApple OSS Distributions 220*aca3beaaSApple OSS Distributions struct user_sigevent { 221*aca3beaaSApple OSS Distributions int sigev_notify; /* Notification type */ 222*aca3beaaSApple OSS Distributions int sigev_signo; /* Signal number */ 223*aca3beaaSApple OSS Distributions union user_sigval sigev_value; /* Signal value */ 224*aca3beaaSApple OSS Distributions user_addr_t sigev_notify_function; /* Notify function */ 225*aca3beaaSApple OSS Distributions user_addr_t sigev_notify_attributes; /* Notify attributes */ 226*aca3beaaSApple OSS Distributions }; 227*aca3beaaSApple OSS Distributions 228*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 229*aca3beaaSApple OSS Distributions 230*aca3beaaSApple OSS Distributions typedef struct __siginfo { 231*aca3beaaSApple OSS Distributions int si_signo; /* signal number */ 232*aca3beaaSApple OSS Distributions int si_errno; /* errno association */ 233*aca3beaaSApple OSS Distributions int si_code; /* signal code */ 234*aca3beaaSApple OSS Distributions pid_t si_pid; /* sending process */ 235*aca3beaaSApple OSS Distributions uid_t si_uid; /* sender's ruid */ 236*aca3beaaSApple OSS Distributions int si_status; /* exit value */ 237*aca3beaaSApple OSS Distributions void *si_addr; /* faulting instruction */ 238*aca3beaaSApple OSS Distributions union sigval si_value; /* signal value */ 239*aca3beaaSApple OSS Distributions long si_band; /* band event for SIGPOLL */ 240*aca3beaaSApple OSS Distributions unsigned long __pad[7]; /* Reserved for Future Use */ 241*aca3beaaSApple OSS Distributions } siginfo_t; 242*aca3beaaSApple OSS Distributions 243*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 244*aca3beaaSApple OSS Distributions 245*aca3beaaSApple OSS Distributions typedef struct user_siginfo { 246*aca3beaaSApple OSS Distributions int si_signo; /* signal number */ 247*aca3beaaSApple OSS Distributions int si_errno; /* errno association */ 248*aca3beaaSApple OSS Distributions int si_code; /* signal code */ 249*aca3beaaSApple OSS Distributions pid_t si_pid; /* sending process */ 250*aca3beaaSApple OSS Distributions uid_t si_uid; /* sender's ruid */ 251*aca3beaaSApple OSS Distributions int si_status; /* exit value */ 252*aca3beaaSApple OSS Distributions user_addr_t si_addr; /* faulting instruction (see below) */ 253*aca3beaaSApple OSS Distributions union user_sigval si_value; /* signal value */ 254*aca3beaaSApple OSS Distributions user_long_t si_band; /* band event for SIGPOLL */ 255*aca3beaaSApple OSS Distributions user_ulong_t pad[7]; /* Reserved for Future Use */ 256*aca3beaaSApple OSS Distributions } user_siginfo_t; 257*aca3beaaSApple OSS Distributions 258*aca3beaaSApple OSS Distributions typedef struct user64_siginfo { 259*aca3beaaSApple OSS Distributions int si_signo; /* signal number */ 260*aca3beaaSApple OSS Distributions int si_errno; /* errno association */ 261*aca3beaaSApple OSS Distributions int si_code; /* signal code */ 262*aca3beaaSApple OSS Distributions pid_t si_pid; /* sending process */ 263*aca3beaaSApple OSS Distributions uid_t si_uid; /* sender's ruid */ 264*aca3beaaSApple OSS Distributions int si_status; /* exit value */ 265*aca3beaaSApple OSS Distributions user64_addr_t si_addr; /* faulting instruction (see below) */ 266*aca3beaaSApple OSS Distributions union user64_sigval si_value; /* signal value */ 267*aca3beaaSApple OSS Distributions user64_long_t si_band; /* band event for SIGPOLL */ 268*aca3beaaSApple OSS Distributions user64_ulong_t __pad[7]; /* Reserved for Future Use */ 269*aca3beaaSApple OSS Distributions } user64_siginfo_t; 270*aca3beaaSApple OSS Distributions 271*aca3beaaSApple OSS Distributions typedef struct user32_siginfo { 272*aca3beaaSApple OSS Distributions int si_signo; /* signal number */ 273*aca3beaaSApple OSS Distributions int si_errno; /* errno association */ 274*aca3beaaSApple OSS Distributions int si_code; /* signal code */ 275*aca3beaaSApple OSS Distributions pid_t si_pid; /* sending process */ 276*aca3beaaSApple OSS Distributions uid_t si_uid; /* sender's ruid */ 277*aca3beaaSApple OSS Distributions int si_status; /* exit value */ 278*aca3beaaSApple OSS Distributions user32_addr_t si_addr; /* faulting instruction (see below) */ 279*aca3beaaSApple OSS Distributions union user32_sigval si_value; /* signal value */ 280*aca3beaaSApple OSS Distributions user32_long_t si_band; /* band event for SIGPOLL */ 281*aca3beaaSApple OSS Distributions user32_ulong_t __pad[7]; /* Reserved for Future Use */ 282*aca3beaaSApple OSS Distributions } user32_siginfo_t; 283*aca3beaaSApple OSS Distributions 284*aca3beaaSApple OSS Distributions void siginfo_user_to_user32(user_siginfo_t *, user32_siginfo_t *); 285*aca3beaaSApple OSS Distributions void siginfo_user_to_user64(user_siginfo_t *, user64_siginfo_t *); 286*aca3beaaSApple OSS Distributions 287*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 288*aca3beaaSApple OSS Distributions 289*aca3beaaSApple OSS Distributions /* 290*aca3beaaSApple OSS Distributions * When the signal is SIGILL or SIGFPE, si_addr contains the address of 291*aca3beaaSApple OSS Distributions * the faulting instruction. 292*aca3beaaSApple OSS Distributions * When the signal is SIGSEGV or SIGBUS, si_addr contains the address of 293*aca3beaaSApple OSS Distributions * the faulting memory reference. Although for x86 there are cases of SIGSEGV 294*aca3beaaSApple OSS Distributions * for which si_addr cannot be determined and is NULL. 295*aca3beaaSApple OSS Distributions * If the signal is SIGCHLD, the si_pid field will contain the child process ID, 296*aca3beaaSApple OSS Distributions * si_status contains the exit value or signal and 297*aca3beaaSApple OSS Distributions * si_uid contains the real user ID of the process that sent the signal. 298*aca3beaaSApple OSS Distributions */ 299*aca3beaaSApple OSS Distributions 300*aca3beaaSApple OSS Distributions /* Values for si_code */ 301*aca3beaaSApple OSS Distributions 302*aca3beaaSApple OSS Distributions /* Codes for SIGILL */ 303*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 304*aca3beaaSApple OSS Distributions #define ILL_NOOP 0 /* if only I knew... */ 305*aca3beaaSApple OSS Distributions #endif 306*aca3beaaSApple OSS Distributions #define ILL_ILLOPC 1 /* [XSI] illegal opcode */ 307*aca3beaaSApple OSS Distributions #define ILL_ILLTRP 2 /* [XSI] illegal trap */ 308*aca3beaaSApple OSS Distributions #define ILL_PRVOPC 3 /* [XSI] privileged opcode */ 309*aca3beaaSApple OSS Distributions #define ILL_ILLOPN 4 /* [XSI] illegal operand -NOTIMP */ 310*aca3beaaSApple OSS Distributions #define ILL_ILLADR 5 /* [XSI] illegal addressing mode -NOTIMP */ 311*aca3beaaSApple OSS Distributions #define ILL_PRVREG 6 /* [XSI] privileged register -NOTIMP */ 312*aca3beaaSApple OSS Distributions #define ILL_COPROC 7 /* [XSI] coprocessor error -NOTIMP */ 313*aca3beaaSApple OSS Distributions #define ILL_BADSTK 8 /* [XSI] internal stack error -NOTIMP */ 314*aca3beaaSApple OSS Distributions 315*aca3beaaSApple OSS Distributions /* Codes for SIGFPE */ 316*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 317*aca3beaaSApple OSS Distributions #define FPE_NOOP 0 /* if only I knew... */ 318*aca3beaaSApple OSS Distributions #endif 319*aca3beaaSApple OSS Distributions #define FPE_FLTDIV 1 /* [XSI] floating point divide by zero */ 320*aca3beaaSApple OSS Distributions #define FPE_FLTOVF 2 /* [XSI] floating point overflow */ 321*aca3beaaSApple OSS Distributions #define FPE_FLTUND 3 /* [XSI] floating point underflow */ 322*aca3beaaSApple OSS Distributions #define FPE_FLTRES 4 /* [XSI] floating point inexact result */ 323*aca3beaaSApple OSS Distributions #define FPE_FLTINV 5 /* [XSI] invalid floating point operation */ 324*aca3beaaSApple OSS Distributions #define FPE_FLTSUB 6 /* [XSI] subscript out of range -NOTIMP */ 325*aca3beaaSApple OSS Distributions #define FPE_INTDIV 7 /* [XSI] integer divide by zero */ 326*aca3beaaSApple OSS Distributions #define FPE_INTOVF 8 /* [XSI] integer overflow */ 327*aca3beaaSApple OSS Distributions 328*aca3beaaSApple OSS Distributions /* Codes for SIGSEGV */ 329*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 330*aca3beaaSApple OSS Distributions #define SEGV_NOOP 0 /* if only I knew... */ 331*aca3beaaSApple OSS Distributions #endif 332*aca3beaaSApple OSS Distributions #define SEGV_MAPERR 1 /* [XSI] address not mapped to object */ 333*aca3beaaSApple OSS Distributions #define SEGV_ACCERR 2 /* [XSI] invalid permission for mapped object */ 334*aca3beaaSApple OSS Distributions 335*aca3beaaSApple OSS Distributions /* Codes for SIGBUS */ 336*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 337*aca3beaaSApple OSS Distributions #define BUS_NOOP 0 /* if only I knew... */ 338*aca3beaaSApple OSS Distributions #endif 339*aca3beaaSApple OSS Distributions #define BUS_ADRALN 1 /* [XSI] Invalid address alignment */ 340*aca3beaaSApple OSS Distributions #define BUS_ADRERR 2 /* [XSI] Nonexistent physical address -NOTIMP */ 341*aca3beaaSApple OSS Distributions #define BUS_OBJERR 3 /* [XSI] Object-specific HW error - NOTIMP */ 342*aca3beaaSApple OSS Distributions 343*aca3beaaSApple OSS Distributions /* Codes for SIGTRAP */ 344*aca3beaaSApple OSS Distributions #define TRAP_BRKPT 1 /* [XSI] Process breakpoint -NOTIMP */ 345*aca3beaaSApple OSS Distributions #define TRAP_TRACE 2 /* [XSI] Process trace trap -NOTIMP */ 346*aca3beaaSApple OSS Distributions 347*aca3beaaSApple OSS Distributions /* Codes for SIGCHLD */ 348*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 349*aca3beaaSApple OSS Distributions #define CLD_NOOP 0 /* if only I knew... */ 350*aca3beaaSApple OSS Distributions #endif 351*aca3beaaSApple OSS Distributions #define CLD_EXITED 1 /* [XSI] child has exited */ 352*aca3beaaSApple OSS Distributions #define CLD_KILLED 2 /* [XSI] terminated abnormally, no core file */ 353*aca3beaaSApple OSS Distributions #define CLD_DUMPED 3 /* [XSI] terminated abnormally, core file */ 354*aca3beaaSApple OSS Distributions #define CLD_TRAPPED 4 /* [XSI] traced child has trapped */ 355*aca3beaaSApple OSS Distributions #define CLD_STOPPED 5 /* [XSI] child has stopped */ 356*aca3beaaSApple OSS Distributions #define CLD_CONTINUED 6 /* [XSI] stopped child has continued */ 357*aca3beaaSApple OSS Distributions 358*aca3beaaSApple OSS Distributions /* Codes for SIGPOLL */ 359*aca3beaaSApple OSS Distributions #define POLL_IN 1 /* [XSR] Data input available */ 360*aca3beaaSApple OSS Distributions #define POLL_OUT 2 /* [XSR] Output buffers available */ 361*aca3beaaSApple OSS Distributions #define POLL_MSG 3 /* [XSR] Input message available */ 362*aca3beaaSApple OSS Distributions #define POLL_ERR 4 /* [XSR] I/O error */ 363*aca3beaaSApple OSS Distributions #define POLL_PRI 5 /* [XSR] High priority input available */ 364*aca3beaaSApple OSS Distributions #define POLL_HUP 6 /* [XSR] Device disconnected */ 365*aca3beaaSApple OSS Distributions 366*aca3beaaSApple OSS Distributions /* union for signal handlers */ 367*aca3beaaSApple OSS Distributions union __sigaction_u { 368*aca3beaaSApple OSS Distributions void (*__sa_handler)(int); 369*aca3beaaSApple OSS Distributions void (*__sa_sigaction)(int, struct __siginfo *, 370*aca3beaaSApple OSS Distributions void *); 371*aca3beaaSApple OSS Distributions }; 372*aca3beaaSApple OSS Distributions 373*aca3beaaSApple OSS Distributions /* Signal vector template for Kernel user boundary */ 374*aca3beaaSApple OSS Distributions struct __sigaction { 375*aca3beaaSApple OSS Distributions union __sigaction_u __sigaction_u; /* signal handler */ 376*aca3beaaSApple OSS Distributions void (*sa_tramp)(void *, int, int, siginfo_t *, void *); 377*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 378*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 379*aca3beaaSApple OSS Distributions }; 380*aca3beaaSApple OSS Distributions 381*aca3beaaSApple OSS Distributions /* 382*aca3beaaSApple OSS Distributions * Signal vector "template" used in sigaction call. 383*aca3beaaSApple OSS Distributions */ 384*aca3beaaSApple OSS Distributions struct sigaction { 385*aca3beaaSApple OSS Distributions union __sigaction_u __sigaction_u; /* signal handler */ 386*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 387*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 388*aca3beaaSApple OSS Distributions }; 389*aca3beaaSApple OSS Distributions 390*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 391*aca3beaaSApple OSS Distributions #include <machine/types.h> 392*aca3beaaSApple OSS Distributions 393*aca3beaaSApple OSS Distributions union __user32_sigaction_u { 394*aca3beaaSApple OSS Distributions user32_addr_t __sa_handler; 395*aca3beaaSApple OSS Distributions user32_addr_t __sa_sigaction; 396*aca3beaaSApple OSS Distributions }; 397*aca3beaaSApple OSS Distributions 398*aca3beaaSApple OSS Distributions struct user32_sigaction { 399*aca3beaaSApple OSS Distributions union __user32_sigaction_u __sigaction_u; /* signal handler */ 400*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 401*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 402*aca3beaaSApple OSS Distributions }; 403*aca3beaaSApple OSS Distributions 404*aca3beaaSApple OSS Distributions struct __user32_sigaction { 405*aca3beaaSApple OSS Distributions union __user32_sigaction_u __sigaction_u; /* signal handler */ 406*aca3beaaSApple OSS Distributions user32_addr_t sa_tramp; 407*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 408*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 409*aca3beaaSApple OSS Distributions }; 410*aca3beaaSApple OSS Distributions 411*aca3beaaSApple OSS Distributions union __user64_sigaction_u { 412*aca3beaaSApple OSS Distributions user64_addr_t __sa_handler; 413*aca3beaaSApple OSS Distributions user64_addr_t __sa_sigaction; 414*aca3beaaSApple OSS Distributions }; 415*aca3beaaSApple OSS Distributions 416*aca3beaaSApple OSS Distributions struct user64_sigaction { 417*aca3beaaSApple OSS Distributions union __user64_sigaction_u __sigaction_u; /* signal handler */ 418*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 419*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 420*aca3beaaSApple OSS Distributions }; 421*aca3beaaSApple OSS Distributions 422*aca3beaaSApple OSS Distributions struct __user64_sigaction { 423*aca3beaaSApple OSS Distributions union __user64_sigaction_u __sigaction_u; /* signal handler */ 424*aca3beaaSApple OSS Distributions user64_addr_t sa_tramp; /* signal mask to apply */ 425*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 426*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 427*aca3beaaSApple OSS Distributions }; 428*aca3beaaSApple OSS Distributions 429*aca3beaaSApple OSS Distributions union __kern_sigaction_u { 430*aca3beaaSApple OSS Distributions user_addr_t __sa_handler; 431*aca3beaaSApple OSS Distributions user_addr_t __sa_sigaction; 432*aca3beaaSApple OSS Distributions }; 433*aca3beaaSApple OSS Distributions 434*aca3beaaSApple OSS Distributions struct kern_sigaction { 435*aca3beaaSApple OSS Distributions union __kern_sigaction_u __sigaction_u; /* signal handler */ 436*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 437*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 438*aca3beaaSApple OSS Distributions }; 439*aca3beaaSApple OSS Distributions 440*aca3beaaSApple OSS Distributions struct __kern_sigaction { 441*aca3beaaSApple OSS Distributions union __kern_sigaction_u __sigaction_u; /* signal handler */ 442*aca3beaaSApple OSS Distributions user_addr_t sa_tramp; /* signal mask to apply */ 443*aca3beaaSApple OSS Distributions sigset_t sa_mask; /* signal mask to apply */ 444*aca3beaaSApple OSS Distributions int sa_flags; /* see signal options below */ 445*aca3beaaSApple OSS Distributions }; 446*aca3beaaSApple OSS Distributions 447*aca3beaaSApple OSS Distributions #undef SIG_DFL 448*aca3beaaSApple OSS Distributions #undef SIG_IGN 449*aca3beaaSApple OSS Distributions #undef SIG_ERR 450*aca3beaaSApple OSS Distributions #define SIG_DFL ((user_addr_t)0LL) 451*aca3beaaSApple OSS Distributions #define SIG_IGN ((user_addr_t)1LL) 452*aca3beaaSApple OSS Distributions #define SIG_ERR ((user_addr_t)-1LL) 453*aca3beaaSApple OSS Distributions 454*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 455*aca3beaaSApple OSS Distributions 456*aca3beaaSApple OSS Distributions 457*aca3beaaSApple OSS Distributions /* if SA_SIGINFO is set, sa_sigaction is to be used instead of sa_handler. */ 458*aca3beaaSApple OSS Distributions #define sa_handler __sigaction_u.__sa_handler 459*aca3beaaSApple OSS Distributions #define sa_sigaction __sigaction_u.__sa_sigaction 460*aca3beaaSApple OSS Distributions 461*aca3beaaSApple OSS Distributions #define SA_ONSTACK 0x0001 /* take signal on signal stack */ 462*aca3beaaSApple OSS Distributions #define SA_RESTART 0x0002 /* restart system on signal return */ 463*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 464*aca3beaaSApple OSS Distributions #define SA_DISABLE 0x0004 /* disable taking signals on alternate stack - for user_sigaltstack.ss_flags only */ 465*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 466*aca3beaaSApple OSS Distributions #define SA_RESETHAND 0x0004 /* reset to SIG_DFL when taking signal */ 467*aca3beaaSApple OSS Distributions #define SA_NOCLDSTOP 0x0008 /* do not generate SIGCHLD on child stop */ 468*aca3beaaSApple OSS Distributions #define SA_NODEFER 0x0010 /* don't mask the signal we're delivering */ 469*aca3beaaSApple OSS Distributions #define SA_NOCLDWAIT 0x0020 /* don't keep zombies around */ 470*aca3beaaSApple OSS Distributions #define SA_SIGINFO 0x0040 /* signal handler with SA_SIGINFO args */ 471*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 472*aca3beaaSApple OSS Distributions #define SA_USERTRAMP 0x0100 /* do not bounce off kernel's sigtramp */ 473*aca3beaaSApple OSS Distributions /* This will provide 64bit register set in a 32bit user address space */ 474*aca3beaaSApple OSS Distributions #define SA_64REGSET 0x0200 /* signal handler with SA_SIGINFO args with 64bit regs information */ 475*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 476*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 477*aca3beaaSApple OSS Distributions #define SA_VALIDATE_SIGRETURN_FROM_SIGTRAMP 0x0400 /* use token to validate sigreturn was called from matching sigtramp */ 478*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 479*aca3beaaSApple OSS Distributions 480*aca3beaaSApple OSS Distributions /* the following are the only bits we support from user space, the 481*aca3beaaSApple OSS Distributions * rest are for kernel use only. 482*aca3beaaSApple OSS Distributions */ 483*aca3beaaSApple OSS Distributions #define SA_USERSPACE_MASK (SA_ONSTACK | SA_RESTART | SA_RESETHAND | SA_NOCLDSTOP | SA_NODEFER | SA_NOCLDWAIT | SA_SIGINFO) 484*aca3beaaSApple OSS Distributions 485*aca3beaaSApple OSS Distributions /* 486*aca3beaaSApple OSS Distributions * Flags for sigprocmask: 487*aca3beaaSApple OSS Distributions */ 488*aca3beaaSApple OSS Distributions #define SIG_BLOCK 1 /* block specified signal set */ 489*aca3beaaSApple OSS Distributions #define SIG_UNBLOCK 2 /* unblock specified signal set */ 490*aca3beaaSApple OSS Distributions #define SIG_SETMASK 3 /* set specified signal set */ 491*aca3beaaSApple OSS Distributions 492*aca3beaaSApple OSS Distributions /* POSIX 1003.1b required values. */ 493*aca3beaaSApple OSS Distributions #define SI_USER 0x10001 /* [CX] signal from kill() */ 494*aca3beaaSApple OSS Distributions #define SI_QUEUE 0x10002 /* [CX] signal from sigqueue() */ 495*aca3beaaSApple OSS Distributions #define SI_TIMER 0x10003 /* [CX] timer expiration */ 496*aca3beaaSApple OSS Distributions #define SI_ASYNCIO 0x10004 /* [CX] aio request completion */ 497*aca3beaaSApple OSS Distributions #define SI_MESGQ 0x10005 /* [CX] from message arrival on empty queue */ 498*aca3beaaSApple OSS Distributions 499*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 500*aca3beaaSApple OSS Distributions typedef void (*sig_t)(int); /* type of signal function */ 501*aca3beaaSApple OSS Distributions #endif 502*aca3beaaSApple OSS Distributions 503*aca3beaaSApple OSS Distributions /* 504*aca3beaaSApple OSS Distributions * Structure used in sigaltstack call. 505*aca3beaaSApple OSS Distributions */ 506*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE 507*aca3beaaSApple OSS Distributions 508*aca3beaaSApple OSS Distributions struct user32_sigaltstack { 509*aca3beaaSApple OSS Distributions user32_addr_t ss_sp; /* signal stack base */ 510*aca3beaaSApple OSS Distributions user32_size_t ss_size; /* signal stack length */ 511*aca3beaaSApple OSS Distributions int ss_flags; /* SA_DISABLE and/or SA_ONSTACK */ 512*aca3beaaSApple OSS Distributions }; 513*aca3beaaSApple OSS Distributions 514*aca3beaaSApple OSS Distributions struct user64_sigaltstack { 515*aca3beaaSApple OSS Distributions user64_addr_t ss_sp; /* signal stack base */ 516*aca3beaaSApple OSS Distributions user64_size_t ss_size; /* signal stack length */ 517*aca3beaaSApple OSS Distributions int ss_flags; /* SA_DISABLE and/or SA_ONSTACK */ 518*aca3beaaSApple OSS Distributions }; 519*aca3beaaSApple OSS Distributions 520*aca3beaaSApple OSS Distributions struct kern_sigaltstack { 521*aca3beaaSApple OSS Distributions user_addr_t ss_sp; /* signal stack base */ 522*aca3beaaSApple OSS Distributions user_size_t ss_size; /* signal stack length */ 523*aca3beaaSApple OSS Distributions int ss_flags; /* SA_DISABLE and/or SA_ONSTACK */ 524*aca3beaaSApple OSS Distributions }; 525*aca3beaaSApple OSS Distributions 526*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */ 527*aca3beaaSApple OSS Distributions 528*aca3beaaSApple OSS Distributions #define SS_ONSTACK 0x0001 /* take signal on signal stack */ 529*aca3beaaSApple OSS Distributions #define SS_DISABLE 0x0004 /* disable taking signals on alternate stack */ 530*aca3beaaSApple OSS Distributions #define MINSIGSTKSZ 32768 /* (32K)minimum allowable stack */ 531*aca3beaaSApple OSS Distributions #define SIGSTKSZ 131072 /* (128K)recommended stack size */ 532*aca3beaaSApple OSS Distributions 533*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 534*aca3beaaSApple OSS Distributions /* 535*aca3beaaSApple OSS Distributions * 4.3 compatibility: 536*aca3beaaSApple OSS Distributions * Signal vector "template" used in sigvec call. 537*aca3beaaSApple OSS Distributions */ 538*aca3beaaSApple OSS Distributions struct sigvec { 539*aca3beaaSApple OSS Distributions void (*sv_handler)(int); /* signal handler */ 540*aca3beaaSApple OSS Distributions int sv_mask; /* signal mask to apply */ 541*aca3beaaSApple OSS Distributions int sv_flags; /* see signal options below */ 542*aca3beaaSApple OSS Distributions }; 543*aca3beaaSApple OSS Distributions 544*aca3beaaSApple OSS Distributions #define SV_ONSTACK SA_ONSTACK 545*aca3beaaSApple OSS Distributions #define SV_INTERRUPT SA_RESTART /* same bit, opposite sense */ 546*aca3beaaSApple OSS Distributions #define SV_RESETHAND SA_RESETHAND 547*aca3beaaSApple OSS Distributions #define SV_NODEFER SA_NODEFER 548*aca3beaaSApple OSS Distributions #define SV_NOCLDSTOP SA_NOCLDSTOP 549*aca3beaaSApple OSS Distributions #define SV_SIGINFO SA_SIGINFO 550*aca3beaaSApple OSS Distributions 551*aca3beaaSApple OSS Distributions #define sv_onstack sv_flags /* isn't compatibility wonderful! */ 552*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 553*aca3beaaSApple OSS Distributions 554*aca3beaaSApple OSS Distributions /* 555*aca3beaaSApple OSS Distributions * Structure used in sigstack call. 556*aca3beaaSApple OSS Distributions */ 557*aca3beaaSApple OSS Distributions struct sigstack { 558*aca3beaaSApple OSS Distributions char *ss_sp; /* signal stack pointer */ 559*aca3beaaSApple OSS Distributions int ss_onstack; /* current status */ 560*aca3beaaSApple OSS Distributions }; 561*aca3beaaSApple OSS Distributions 562*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 563*aca3beaaSApple OSS Distributions /* 564*aca3beaaSApple OSS Distributions * Macro for converting signal number to a mask suitable for 565*aca3beaaSApple OSS Distributions * sigblock(). 566*aca3beaaSApple OSS Distributions */ 567*aca3beaaSApple OSS Distributions #define sigmask(m) (1 << ((m)-1)) 568*aca3beaaSApple OSS Distributions 569*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE 570*aca3beaaSApple OSS Distributions /* 571*aca3beaaSApple OSS Distributions * signals delivered on a per-thread basis. 572*aca3beaaSApple OSS Distributions */ 573*aca3beaaSApple OSS Distributions #define threadmask (sigmask(SIGILL)|sigmask(SIGTRAP)|\ 574*aca3beaaSApple OSS Distributions sigmask(SIGABRT)|sigmask(SIGEMT)|\ 575*aca3beaaSApple OSS Distributions sigmask(SIGFPE)|sigmask(SIGBUS)|\ 576*aca3beaaSApple OSS Distributions sigmask(SIGSEGV)|sigmask(SIGSYS)|\ 577*aca3beaaSApple OSS Distributions sigmask(SIGPIPE)|sigmask(SIGKILL)) 578*aca3beaaSApple OSS Distributions 579*aca3beaaSApple OSS Distributions #define workq_threadmask ((threadmask | sigcantmask | sigmask(SIGPROF)) & ~sigmask(SIGABRT)) 580*aca3beaaSApple OSS Distributions 581*aca3beaaSApple OSS Distributions /* 582*aca3beaaSApple OSS Distributions * Signals carried across exec. 583*aca3beaaSApple OSS Distributions */ 584*aca3beaaSApple OSS Distributions #define execmask (sigmask(SIGHUP)|sigmask(SIGINT)|\ 585*aca3beaaSApple OSS Distributions sigmask(SIGQUIT)|sigmask(SIGKILL)|\ 586*aca3beaaSApple OSS Distributions sigmask(SIGTERM)|sigmask(SIGSTOP)|\ 587*aca3beaaSApple OSS Distributions sigmask(SIGTSTP)|sigmask(SIGCONT)|\ 588*aca3beaaSApple OSS Distributions sigmask(SIGTTIN)|sigmask(SIGTTOU)|\ 589*aca3beaaSApple OSS Distributions sigmask(SIGUSR1)|sigmask(SIGUSR2)) 590*aca3beaaSApple OSS Distributions 591*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 592*aca3beaaSApple OSS Distributions 593*aca3beaaSApple OSS Distributions #define BADSIG SIG_ERR 594*aca3beaaSApple OSS Distributions 595*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 596*aca3beaaSApple OSS Distributions #endif /* !_ANSI_SOURCE */ 597*aca3beaaSApple OSS Distributions 598*aca3beaaSApple OSS Distributions /* 599*aca3beaaSApple OSS Distributions * For historical reasons; programs expect signal's return value to be 600*aca3beaaSApple OSS Distributions * defined by <sys/signal.h>. 601*aca3beaaSApple OSS Distributions */ 602*aca3beaaSApple OSS Distributions __BEGIN_DECLS 603*aca3beaaSApple OSS Distributions void(*signal(int, void (*)(int)))(int); 604*aca3beaaSApple OSS Distributions __END_DECLS 605*aca3beaaSApple OSS Distributions #endif /* !_SYS_SIGNAL_H_ */ 606