1 1.1 ryo /* $NetBSD: linux_siginfo.h,v 1.1 2021/09/23 06:56:27 ryo Exp $ */ 2 1.1 ryo 3 1.1 ryo /*- 4 1.1 ryo * Copyright (c) 2021 The NetBSD Foundation, Inc. 5 1.1 ryo * All rights reserved. 6 1.1 ryo * 7 1.1 ryo * Redistribution and use in source and binary forms, with or without 8 1.1 ryo * modification, are permitted provided that the following conditions 9 1.1 ryo * are met: 10 1.1 ryo * 1. Redistributions of source code must retain the above copyright 11 1.1 ryo * notice, this list of conditions and the following disclaimer. 12 1.1 ryo * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 ryo * notice, this list of conditions and the following disclaimer in the 14 1.1 ryo * documentation and/or other materials provided with the distribution. 15 1.1 ryo * 16 1.1 ryo * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 1.1 ryo * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 1.1 ryo * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 1.1 ryo * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 1.1 ryo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 1.1 ryo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 1.1 ryo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 1.1 ryo * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 1.1 ryo * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 1.1 ryo * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 1.1 ryo * POSSIBILITY OF SUCH DAMAGE. 27 1.1 ryo */ 28 1.1 ryo 29 1.1 ryo #ifndef _AARCH64_LINUX_SIGINFO_H 30 1.1 ryo #define _AARCH64_LINUX_SIGINFO_H 31 1.1 ryo 32 1.1 ryo #define LINUX___ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 33 1.1 ryo #define LINUX_SI_MAX_SIZE 128 34 1.1 ryo #define LINUX_SI_PAD_SIZE \ 35 1.1 ryo ((LINUX_SI_MAX_SIZE - LINUX___ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) 36 1.1 ryo 37 1.1 ryo typedef union linux_sigval { 38 1.1 ryo int sival_int; 39 1.1 ryo void *sival_ptr; 40 1.1 ryo } linux_sigval_t; 41 1.1 ryo 42 1.1 ryo typedef struct linux_siginfo { 43 1.1 ryo int lsi_signo; 44 1.1 ryo int lsi_errno; 45 1.1 ryo int lsi_code; 46 1.1 ryo union { 47 1.1 ryo int _pad[LINUX_SI_PAD_SIZE]; 48 1.1 ryo 49 1.1 ryo /* kill() */ 50 1.1 ryo struct { 51 1.1 ryo linux_pid_t _pid; 52 1.1 ryo linux_uid_t _uid; 53 1.1 ryo } _kill; 54 1.1 ryo 55 1.1 ryo /* POSIX.1b signals */ 56 1.1 ryo struct { 57 1.1 ryo linux_pid_t _pid; 58 1.1 ryo linux_uid_t _uid; 59 1.1 ryo linux_sigval_t _sigval; 60 1.1 ryo } _rt; 61 1.1 ryo 62 1.1 ryo /* POSIX.1b timers */ 63 1.1 ryo struct { 64 1.1 ryo linux_timer_t _tid; 65 1.1 ryo int _overrun; 66 1.1 ryo char _pad[sizeof(linux_uid_t) - sizeof(int)]; 67 1.1 ryo linux_sigval_t _sigval; 68 1.1 ryo int _sys_private; 69 1.1 ryo } _timer; 70 1.1 ryo 71 1.1 ryo /* SIGCHLD */ 72 1.1 ryo struct { 73 1.1 ryo linux_pid_t _pid; 74 1.1 ryo linux_uid_t _uid; 75 1.1 ryo int _status; 76 1.1 ryo linux_clock_t _utime; 77 1.1 ryo linux_clock_t _stime; 78 1.1 ryo } _sigchld; 79 1.1 ryo 80 1.1 ryo /* SIGPOLL */ 81 1.1 ryo struct { 82 1.1 ryo long _band; 83 1.1 ryo int _fd; 84 1.1 ryo } _sigpoll; 85 1.1 ryo 86 1.1 ryo /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGTRAP, SIGEMT */ 87 1.1 ryo struct { 88 1.1 ryo void *_addr; 89 1.1 ryo #define __ADDR_BND_PKEY_PAD \ 90 1.1 ryo (__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *)) 91 1.1 ryo union { 92 1.1 ryo short _addr_lsb; 93 1.1 ryo struct { 94 1.1 ryo char _dummy_bnd[__ADDR_BND_PKEY_PAD]; 95 1.1 ryo void *_lower; 96 1.1 ryo void *_upper; 97 1.1 ryo } _addr_bnd; 98 1.1 ryo struct { 99 1.1 ryo char _dummy_pkey[__ADDR_BND_PKEY_PAD]; 100 1.1 ryo uint32_t _pkey; 101 1.1 ryo } _addr_pkey; 102 1.1 ryo }; 103 1.1 ryo } _sigfault; 104 1.1 ryo } _sidata; 105 1.1 ryo } linux_siginfo_t; 106 1.1 ryo 107 1.1 ryo #endif /* !_AARCH64_LINUX_SIGINFO_H */ 108