125981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 3198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * This file is subject to the terms and conditions of the GNU General Public 4198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * License. See the file "COPYING" in the main directory of this archive 5198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * for more details. 6198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * 7198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle 8198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 2000, 2001 Silicon Graphics, Inc. 9198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 10198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifndef _UAPI_ASM_SIGINFO_H 11198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define _UAPI_ASM_SIGINFO_H 12198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 13198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 14198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int)) 15198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef __ARCH_SI_TRAPNO /* exception code needs to fill this ... */ 16198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 17198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define HAVE_ARCH_SIGINFO_T 18198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 19198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Careful to keep union _sifields from shifting ... 21198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 22e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if _MIPS_SZLONG == 32 23198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 24e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#elif _MIPS_SZLONG == 64 25198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 26e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#else 27e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#error _MIPS_SZLONG neither 32 nor 64 28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 29198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define __ARCH_SIGSYS 31e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 32d4bfa476e64733d26a737ecb94b81c41860851d6Christopher Ferris#include <asm-generic/siginfo.h> 33198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 3412e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */ 35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo { 36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_signo; 37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_code; 38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_errno; 39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; 40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris union { 42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _pad[SI_PAD_SIZE]; 43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* kill() */ 45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 46ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_pid_t _pid; /* sender's pid */ 47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _kill; 49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b timers */ 51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 52ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_timer_t _tid; /* timer id */ 53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _overrun; /* overrun count */ 54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; /* same as below */ 56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _sys_private; /* not to be passed to user */ 57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _timer; 58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b signals */ 60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 61ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_pid_t _pid; /* sender's pid */ 62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; 64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _rt; 65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGCHLD */ 67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 68ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_pid_t _pid; /* which child */ 69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 71ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_clock_t _utime; 72ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_clock_t _stime; 73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigchld; 74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* IRIX SIGCHLD */ 76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 77ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_pid_t _pid; /* which child */ 78ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_clock_t _utime; 79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 80ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __kernel_clock_t _stime; 81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _irix_sigchld; 82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris void __user *_addr; /* faulting insn/memory ref. */ 86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO 87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _trapno; /* TRAP # which caused the signal */ 88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 89198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris short _addr_lsb; 90ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris union { 91ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris /* used when si_code=SEGV_BNDERR */ 92ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris struct { 93ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris void __user *_lower; 94ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris void __user *_upper; 95ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris } _addr_bnd; 96ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris /* used when si_code=SEGV_PKUERR */ 97ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris __u32 _pkey; 98ccfaccd726a369b7df72e251710755233d176e5aChristopher Ferris }; 99198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigfault; 100198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 101198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGPOLL, SIGXFSZ (To do ...) */ 102198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 103198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 104198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _fd; 105198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigpoll; 106e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 107e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* SIGSYS */ 108e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct { 109e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris void __user *_call_addr; /* calling user insn */ 110e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris int _syscall; /* triggering system call number */ 111e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris unsigned int _arch; /* AUDIT_ARCH_* of syscall */ 112e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris } _sigsys; 113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sifields; 114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t; 115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 116198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 117198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values 118198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible. 119198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 120198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO 121198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER 122198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ 123198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO -2 /* sent by AIO completion */ 12425981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris#define SI_TIMER -3 /* sent by timer expiration */ 12525981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris#define SI_MESGQ -4 /* sent by real time mesq state change */ 126198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 127198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */ 128