linux/arch/mips/include/uapi/asm/siginfo.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle
   7 * Copyright (C) 2000, 2001 Silicon Graphics, Inc.
   8 */
   9#ifndef _UAPI_ASM_SIGINFO_H
  10#define _UAPI_ASM_SIGINFO_H
  11
  12
  13#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int))
  14#undef __ARCH_SI_TRAPNO /* exception code needs to fill this ...  */
  15
  16#define HAVE_ARCH_SIGINFO_T
  17
  18/*
  19 * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked
  20 * by design ...
  21 */
  22#define HAVE_ARCH_COPY_SIGINFO
  23struct siginfo;
  24
  25/*
  26 * Careful to keep union _sifields from shifting ...
  27 */
  28#if _MIPS_SZLONG == 32
  29#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
  30#elif _MIPS_SZLONG == 64
  31#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
  32#else
  33#error _MIPS_SZLONG neither 32 nor 64
  34#endif
  35
  36#define __ARCH_SIGSYS
  37
  38#include <asm-generic/siginfo.h>
  39
  40typedef struct siginfo {
  41        int si_signo;
  42        int si_code;
  43        int si_errno;
  44        int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
  45
  46        union {
  47                int _pad[SI_PAD_SIZE];
  48
  49                /* kill() */
  50                struct {
  51                        pid_t _pid;             /* sender's pid */
  52                        __ARCH_SI_UID_T _uid;   /* sender's uid */
  53                } _kill;
  54
  55                /* POSIX.1b timers */
  56                struct {
  57                        timer_t _tid;           /* timer id */
  58                        int _overrun;           /* overrun count */
  59                        char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
  60                        sigval_t _sigval;       /* same as below */
  61                        int _sys_private;       /* not to be passed to user */
  62                } _timer;
  63
  64                /* POSIX.1b signals */
  65                struct {
  66                        pid_t _pid;             /* sender's pid */
  67                        __ARCH_SI_UID_T _uid;   /* sender's uid */
  68                        sigval_t _sigval;
  69                } _rt;
  70
  71                /* SIGCHLD */
  72                struct {
  73                        pid_t _pid;             /* which child */
  74                        __ARCH_SI_UID_T _uid;   /* sender's uid */
  75                        int _status;            /* exit code */
  76                        clock_t _utime;
  77                        clock_t _stime;
  78                } _sigchld;
  79
  80                /* IRIX SIGCHLD */
  81                struct {
  82                        pid_t _pid;             /* which child */
  83                        clock_t _utime;
  84                        int _status;            /* exit code */
  85                        clock_t _stime;
  86                } _irix_sigchld;
  87
  88                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
  89                struct {
  90                        void __user *_addr; /* faulting insn/memory ref. */
  91#ifdef __ARCH_SI_TRAPNO
  92                        int _trapno;    /* TRAP # which caused the signal */
  93#endif
  94                        short _addr_lsb;
  95                } _sigfault;
  96
  97                /* SIGPOLL, SIGXFSZ (To do ...)  */
  98                struct {
  99                        __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
 100                        int _fd;
 101                } _sigpoll;
 102
 103                /* SIGSYS */
 104                struct {
 105                        void __user *_call_addr; /* calling user insn */
 106                        int _syscall;   /* triggering system call number */
 107                        unsigned int _arch;     /* AUDIT_ARCH_* of syscall */
 108                } _sigsys;
 109        } _sifields;
 110} siginfo_t;
 111
 112/*
 113 * si_code values
 114 * Again these have been chosen to be IRIX compatible.
 115 */
 116#undef SI_ASYNCIO
 117#undef SI_TIMER
 118#undef SI_MESGQ
 119#define SI_ASYNCIO      -2      /* sent by AIO completion */
 120#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */
 121#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */
 122
 123
 124#endif /* _UAPI_ASM_SIGINFO_H */
 125