1 /* $OpenBSD: linux_signal.h,v 1.8 2002/03/14 01:26:50 millert Exp $ */ 2 /* $NetBSD: linux_signal.h,v 1.4 1995/08/27 20:51:51 fvdl Exp $ */ 3 4 /* 5 * Copyright (c) 1995 Frank van der Linden 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed for the NetBSD Project 19 * by Frank van der Linden 20 * 4. The name of the author may not be used to endorse or promote products 21 * derived from this software without specific prior written permission 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 26 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 28 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 */ 34 35 #ifndef _LINUX_SIGNAL_H 36 #define _LINUX_SIGNAL_H 37 38 #define LINUX_SIGHUP 1 39 #define LINUX_SIGINT 2 40 #define LINUX_SIGQUIT 3 41 #define LINUX_SIGILL 4 42 #define LINUX_SIGTRAP 5 43 #define LINUX_SIGABRT 6 44 #define LINUX_SIGIOT 6 45 #define LINUX_SIGBUS 7 46 #define LINUX_SIGFPE 8 47 #define LINUX_SIGKILL 9 48 #define LINUX_SIGUSR1 10 49 #define LINUX_SIGSEGV 11 50 #define LINUX_SIGUSR2 12 51 #define LINUX_SIGPIPE 13 52 #define LINUX_SIGALRM 14 53 #define LINUX_SIGTERM 15 54 #define LINUX_SIGSTKFLT 16 55 #define LINUX_SIGCHLD 17 56 #define LINUX_SIGCONT 18 57 #define LINUX_SIGSTOP 19 58 #define LINUX_SIGTSTP 20 59 #define LINUX_SIGTTIN 21 60 #define LINUX_SIGTTOU 22 61 #define LINUX_SIGURG 23 62 #define LINUX_SIGXCPU 24 63 #define LINUX_SIGXFSZ 25 64 #define LINUX_SIGVTALRM 26 65 #define LINUX_SIGPROF 27 66 #define LINUX_SIGWINCH 28 67 #define LINUX_SIGIO 29 68 #define LINUX_SIGPWR 30 69 #define LINUX_SIGUNUSED 31 70 #define LINUX_NSIG 32 71 72 #define LINUX__NSIG 64 73 #define LINUX__NSIG_BPW 32 74 #define LINUX__NSIG_WORDS (LINUX__NSIG / LINUX__NSIG_BPW) 75 76 #define LINUX_SIG_BLOCK 0 77 #define LINUX_SIG_UNBLOCK 1 78 #define LINUX_SIG_SETMASK 2 79 80 typedef u_long linux_old_sigset_t; 81 typedef struct { 82 u_long sig[LINUX__NSIG_WORDS]; 83 } linux_sigset_t; 84 85 typedef void (*linux_handler_t)(int); 86 87 struct linux_old_sigaction { 88 linux_handler_t sa__handler; 89 linux_old_sigset_t sa_mask; 90 u_long sa_flags; 91 void (*sa_restorer)(void); 92 }; 93 94 struct linux_sigaction { 95 linux_handler_t sa__handler; 96 u_long sa_flags; 97 void (*sa_restorer)(void); 98 linux_sigset_t sa_mask; 99 }; 100 101 /* sa_flags */ 102 #define LINUX_SA_NOCLDSTOP 0x00000001 103 #define LINUX_SA_SIGINFO 0x00000004 104 #define LINUX_SA_ONSTACK 0x08000000 105 #define LINUX_SA_RESTART 0x10000000 106 #define LINUX_SA_INTERRUPT 0x20000000 107 #define LINUX_SA_NOMASK 0x40000000 108 #define LINUX_SA_ONESHOT 0x80000000 109 #define LINUX_SA_ALLBITS 0xf8000001 110 111 struct linux_sigaltstack { 112 void *ss_sp; 113 int ss_flags; 114 size_t ss_size; 115 }; 116 117 /* ss_flags */ 118 #define LINUX_SS_ONSTACK 0x00000001 119 #define LINUX_SS_DISABLE 0x00000002 120 121 extern int bsd_to_linux_sig[]; 122 extern int linux_to_bsd_sig[]; 123 124 void linux_old_to_bsd_sigset(const linux_old_sigset_t *, sigset_t *); 125 void bsd_to_linux_old_sigset(const sigset_t *, linux_old_sigset_t *); 126 127 void linux_old_extra_to_bsd_sigset(const linux_old_sigset_t *, 128 const unsigned long *, sigset_t *); 129 void bsd_to_linux_old_extra_sigset(const sigset_t *, 130 linux_old_sigset_t *, unsigned long *); 131 132 void linux_to_bsd_sigset(const linux_sigset_t *, sigset_t *); 133 void bsd_to_linux_sigset(const sigset_t *, linux_sigset_t *); 134 135 void linux_old_to_bsd_sigaction(struct linux_old_sigaction *, 136 struct sigaction *); 137 void bsd_to_linux_old_sigaction(struct sigaction *, 138 struct linux_old_sigaction *); 139 140 void linux_to_bsd_sigaction(struct linux_sigaction *, 141 struct sigaction *); 142 void bsd_to_linux_sigaction(struct sigaction *, 143 struct linux_sigaction *); 144 145 int linux_to_bsd_signal (int, int *); 146 int bsd_to_linux_signal (int, int *); 147 148 #endif /* !_LINUX_SIGNAL_H */ 149