1*803cade3Schristos /* $NetBSD: linux_signal.h,v 1.14 2015/11/14 13:29:35 christos Exp $ */ 221f970e3Smanu 321f970e3Smanu /*- 421f970e3Smanu * Copyright (c) 1995, 1998, 2001 The NetBSD Foundation, Inc. 521f970e3Smanu * All rights reserved. 621f970e3Smanu * 721f970e3Smanu * This code is derived from software contributed to The NetBSD Foundation 821f970e3Smanu * by Frank van der Linden, Eric Haszlakiewicz and Emmanuel Dreyfus. 921f970e3Smanu * 1021f970e3Smanu * Redistribution and use in source and binary forms, with or without 1121f970e3Smanu * modification, are permitted provided that the following conditions 1221f970e3Smanu * are met: 1321f970e3Smanu * 1. Redistributions of source code must retain the above copyright 1421f970e3Smanu * notice, this list of conditions and the following disclaimer. 1521f970e3Smanu * 2. Redistributions in binary form must reproduce the above copyright 1621f970e3Smanu * notice, this list of conditions and the following disclaimer in the 1721f970e3Smanu * documentation and/or other materials provided with the distribution. 1821f970e3Smanu * 1921f970e3Smanu * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2021f970e3Smanu * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2121f970e3Smanu * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2221f970e3Smanu * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2321f970e3Smanu * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2421f970e3Smanu * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2521f970e3Smanu * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2621f970e3Smanu * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2721f970e3Smanu * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2821f970e3Smanu * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2921f970e3Smanu * POSSIBILITY OF SUCH DAMAGE. 3021f970e3Smanu */ 3121f970e3Smanu 3221f970e3Smanu #ifndef _MIPS_LINUX_SIGNAL_H 3321f970e3Smanu #define _MIPS_LINUX_SIGNAL_H 3421f970e3Smanu 3521f970e3Smanu /* 362207c506Smanu * From Linux's include/asm-mips/ptrace.h 372207c506Smanu */ 382207c506Smanu struct linux_pt_regs { 392207c506Smanu unsigned long lpad0[6]; 402207c506Smanu unsigned long lregs[32]; 412207c506Smanu unsigned long llo; 422207c506Smanu unsigned long lhi; 43948a7fa8Smanu unsigned long lcp0_epc; 442207c506Smanu unsigned long lcp0_badvaddr; 452207c506Smanu unsigned long lcp0_status; 462207c506Smanu unsigned long lcp0_cause; 472207c506Smanu }; 482207c506Smanu 492207c506Smanu /* 5021f970e3Smanu * Everything is from Linux's include/asm-mips/signal.h 5121f970e3Smanu */ 5221f970e3Smanu #define LINUX_SIGHUP 1 5321f970e3Smanu #define LINUX_SIGINT 2 5421f970e3Smanu #define LINUX_SIGQUIT 3 5521f970e3Smanu #define LINUX_SIGILL 4 5621f970e3Smanu #define LINUX_SIGTRAP 5 5721f970e3Smanu #define LINUX_SIGABRT 6 5821f970e3Smanu #define LINUX_SIGIOT 6 5921f970e3Smanu #define LINUX_SIGEMT 7 6021f970e3Smanu #define LINUX_SIGFPE 8 6121f970e3Smanu #define LINUX_SIGKILL 9 6221f970e3Smanu #define LINUX_SIGBUS 10 6321f970e3Smanu #define LINUX_SIGSEGV 11 6421f970e3Smanu #define LINUX_SIGSYS 12 6521f970e3Smanu #define LINUX_SIGPIPE 13 6621f970e3Smanu #define LINUX_SIGALRM 14 6721f970e3Smanu #define LINUX_SIGTERM 15 6821f970e3Smanu #define LINUX_SIGUSR1 16 6921f970e3Smanu #define LINUX_SIGUSR2 17 7021f970e3Smanu #define LINUX_SIGCHLD 18 7121f970e3Smanu #define LINUX_SIGCLD 18 7221f970e3Smanu #define LINUX_SIGPWR 19 7321f970e3Smanu #define LINUX_SIGWINCH 20 7421f970e3Smanu #define LINUX_SIGURG 21 7521f970e3Smanu #define LINUX_SIGIO 22 7621f970e3Smanu #define LINUX_SIGPOLL 22 7721f970e3Smanu #define LINUX_SIGSTOP 23 7821f970e3Smanu #define LINUX_SIGTSTP 24 7921f970e3Smanu #define LINUX_SIGCONT 25 8021f970e3Smanu #define LINUX_SIGTTIN 26 8121f970e3Smanu #define LINUX_SIGTTOU 27 8221f970e3Smanu #define LINUX_SIGVTALRM 28 8321f970e3Smanu #define LINUX_SIGPROF 29 8421f970e3Smanu #define LINUX_SIGXCPU 30 8521f970e3Smanu #define LINUX_SIGXFSZ 31 8621f970e3Smanu 87bda4b15eSchristos /* Min/max real-time linux signal */ 8821f970e3Smanu #define LINUX_SIGRTMIN 32 89bda4b15eSchristos #define LINUX_SIGRTMAX (LINUX__NSIG - 1) 9021f970e3Smanu 9121f970e3Smanu #define LINUX__NSIG 128 9227d1edf7Smanu #if defined(ELFSIZE) && (ELFSIZE == 64) 9327d1edf7Smanu #define LINUX__NSIG_BPW 64 9427d1edf7Smanu #else 9521f970e3Smanu #define LINUX__NSIG_BPW 32 9627d1edf7Smanu #endif 9721f970e3Smanu #define LINUX__NSIG_WORDS (LINUX__NSIG / LINUX__NSIG_BPW) 9821f970e3Smanu 9921f970e3Smanu #define LINUX_SIG_BLOCK 1 10021f970e3Smanu #define LINUX_SIG_UNBLOCK 2 10121f970e3Smanu #define LINUX_SIG_SETMASK 3 10221f970e3Smanu 10321f970e3Smanu /* sa_flags */ 10421f970e3Smanu #define LINUX_SA_NOCLDSTOP 0x00000001 10521f970e3Smanu #define LINUX_SA_SIGINFO 0x00000008 1065af2ddd2Srafal #define LINUX_SA_NOCLDWAIT 0x00010000 10721f970e3Smanu #define LINUX_SA_ONSTACK 0x08000000 10821f970e3Smanu #define LINUX_SA_RESTART 0x10000000 10921f970e3Smanu #define LINUX_SA_NODEFER 0x40000000 11021f970e3Smanu #define LINUX_SA_RESETHAND 0x80000000 11121f970e3Smanu #define LINUX_SA_NOMASK LINUX_SA_NODEFER 11221f970e3Smanu #define LINUX_SA_ONESHOT LINUX_SA_RESETHAND 113*803cade3Schristos #define LINUX_SA_ALLBITS 0xd8010009 114*803cade3Schristos /* XXX LINUX_SA_RESTORER has been deprecated; not used any version of glibc */ 11521f970e3Smanu 116d359ae5cSchristos #define LINUX_MINSIGSTKSZ 2048 117d359ae5cSchristos 118f2af9174Sdsl typedef void (*linux___sighandler_t)(int); 11921f970e3Smanu 12021f970e3Smanu typedef unsigned long linux_old_sigset_t; 12121f970e3Smanu typedef struct { 12221f970e3Smanu unsigned long sig[LINUX__NSIG_WORDS]; 12321f970e3Smanu } linux_sigset_t; 12421f970e3Smanu 12521f970e3Smanu /* Used in rt_* calls. No old_sigaction is defined for MIPS */ 12621f970e3Smanu struct linux_sigaction { 127116bcb05Schristos unsigned int linux_sa_flags; 128116bcb05Schristos linux___sighandler_t linux_sa_handler; 129116bcb05Schristos linux_sigset_t linux_sa_mask; 130f2af9174Sdsl void (*linux_sa_restorer)(void); 131116bcb05Schristos int linux_sa_resv[1]; 13221f970e3Smanu }; 13321f970e3Smanu 13421f970e3Smanu struct linux_k_sigaction { 13521f970e3Smanu struct linux_sigaction sa; 13621f970e3Smanu }; 13721f970e3Smanu 1382207c506Smanu struct linux_old_sigaction { 139116bcb05Schristos unsigned int linux_sa_flags; 140116bcb05Schristos linux___sighandler_t linux_sa_handler; 141116bcb05Schristos linux_old_sigset_t linux_sa_mask; 142f2af9174Sdsl void (*linux_sa_restorer)(void); 143116bcb05Schristos int linux_sa_resv[1]; 1442207c506Smanu }; 1452207c506Smanu 14621f970e3Smanu #define LINUX_SS_ONSTACK 1 14721f970e3Smanu #define LINUX_SS_DISABLE 2 14821f970e3Smanu 14921f970e3Smanu #define LINUX_MINSIGSTKSZ 2048 15021f970e3Smanu #define LINUX_SIGSTKSZ 8192 15121f970e3Smanu 15221f970e3Smanu struct linux_sigaltstack { 15321f970e3Smanu void *ss_sp; 15421f970e3Smanu size_t ss_size; 15521f970e3Smanu int ss_flags; 15621f970e3Smanu }; 15721f970e3Smanu typedef struct linux_sigaltstack linux_stack_t; /* XXX really needed ? */ 15821f970e3Smanu 15921f970e3Smanu #endif /* !_MIPS_LINUX_SIGNAL_H */ 160