|
Packit |
6c4009 |
#ifndef __siginfo_t_defined
|
|
Packit |
6c4009 |
#define __siginfo_t_defined 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#include <bits/wordsize.h>
|
|
Packit |
6c4009 |
#include <bits/types.h>
|
|
Packit |
6c4009 |
#include <bits/types/__sigval_t.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define __SI_MAX_SIZE 128
|
|
Packit |
6c4009 |
#if __WORDSIZE == 64
|
|
Packit |
6c4009 |
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
|
Packit |
6c4009 |
#else
|
|
Packit |
6c4009 |
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* Some fields of siginfo_t have architecture-specific variations. */
|
|
Packit |
6c4009 |
#include <bits/siginfo-arch.h>
|
|
Packit |
6c4009 |
#ifndef __SI_ALIGNMENT
|
|
Packit |
6c4009 |
# define __SI_ALIGNMENT /* nothing */
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#ifndef __SI_BAND_TYPE
|
|
Packit |
6c4009 |
# define __SI_BAND_TYPE long int
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#ifndef __SI_CLOCK_T
|
|
Packit |
6c4009 |
# define __SI_CLOCK_T __clock_t
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#ifndef __SI_ERRNO_THEN_CODE
|
|
Packit |
6c4009 |
# define __SI_ERRNO_THEN_CODE 1
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#ifndef __SI_HAVE_SIGSYS
|
|
Packit |
6c4009 |
# define __SI_HAVE_SIGSYS 1
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#ifndef __SI_SIGFAULT_ADDL
|
|
Packit |
6c4009 |
# define __SI_SIGFAULT_ADDL /* nothing */
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
typedef struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
int si_signo; /* Signal number. */
|
|
Packit |
6c4009 |
#if __SI_ERRNO_THEN_CODE
|
|
Packit |
6c4009 |
int si_errno; /* If non-zero, an errno value associated with
|
|
Packit |
6c4009 |
this signal, as defined in <errno.h>. */
|
|
Packit |
6c4009 |
int si_code; /* Signal code. */
|
|
Packit |
6c4009 |
#else
|
|
Packit |
6c4009 |
int si_code;
|
|
Packit |
6c4009 |
int si_errno;
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
#if __WORDSIZE == 64
|
|
Packit |
6c4009 |
int __pad0; /* Explicit padding. */
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
union
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
int _pad[__SI_PAD_SIZE];
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* kill(). */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__pid_t si_pid; /* Sending process ID. */
|
|
Packit |
6c4009 |
__uid_t si_uid; /* Real user ID of sending process. */
|
|
Packit |
6c4009 |
} _kill;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* POSIX.1b timers. */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
int si_tid; /* Timer ID. */
|
|
Packit |
6c4009 |
int si_overrun; /* Overrun count. */
|
|
Packit |
6c4009 |
__sigval_t si_sigval; /* Signal value. */
|
|
Packit |
6c4009 |
} _timer;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* POSIX.1b signals. */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__pid_t si_pid; /* Sending process ID. */
|
|
Packit |
6c4009 |
__uid_t si_uid; /* Real user ID of sending process. */
|
|
Packit |
6c4009 |
__sigval_t si_sigval; /* Signal value. */
|
|
Packit |
6c4009 |
} _rt;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* SIGCHLD. */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
__pid_t si_pid; /* Which child. */
|
|
Packit |
6c4009 |
__uid_t si_uid; /* Real user ID of sending process. */
|
|
Packit |
6c4009 |
int si_status; /* Exit value or signal. */
|
|
Packit |
6c4009 |
__SI_CLOCK_T si_utime;
|
|
Packit |
6c4009 |
__SI_CLOCK_T si_stime;
|
|
Packit |
6c4009 |
} _sigchld;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
void *si_addr; /* Faulting insn/memory ref. */
|
|
Packit |
6c4009 |
__SI_SIGFAULT_ADDL
|
|
Packit |
6c4009 |
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
|
Packit |
6c4009 |
union
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
/* used when si_code=SEGV_BNDERR */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
void *_lower;
|
|
Packit |
6c4009 |
void *_upper;
|
|
Packit |
6c4009 |
} _addr_bnd;
|
|
Packit |
6c4009 |
/* used when si_code=SEGV_PKUERR */
|
|
Packit |
6c4009 |
__uint32_t _pkey;
|
|
Packit |
6c4009 |
} _bounds;
|
|
Packit |
6c4009 |
} _sigfault;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* SIGPOLL. */
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
long int si_band; /* Band event for SIGPOLL. */
|
|
Packit |
6c4009 |
int si_fd;
|
|
Packit |
6c4009 |
} _sigpoll;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* SIGSYS. */
|
|
Packit |
6c4009 |
#if __SI_HAVE_SIGSYS
|
|
Packit |
6c4009 |
struct
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
void *_call_addr; /* Calling user insn. */
|
|
Packit |
6c4009 |
int _syscall; /* Triggering system call number. */
|
|
Packit |
6c4009 |
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
|
Packit |
6c4009 |
} _sigsys;
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
} _sifields;
|
|
Packit |
6c4009 |
} siginfo_t __SI_ALIGNMENT;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
/* X/Open requires some more fields with fixed names. */
|
|
Packit |
6c4009 |
#define si_pid _sifields._kill.si_pid
|
|
Packit |
6c4009 |
#define si_uid _sifields._kill.si_uid
|
|
Packit |
6c4009 |
#define si_timerid _sifields._timer.si_tid
|
|
Packit |
6c4009 |
#define si_overrun _sifields._timer.si_overrun
|
|
Packit |
6c4009 |
#define si_status _sifields._sigchld.si_status
|
|
Packit |
6c4009 |
#define si_utime _sifields._sigchld.si_utime
|
|
Packit |
6c4009 |
#define si_stime _sifields._sigchld.si_stime
|
|
Packit |
6c4009 |
#define si_value _sifields._rt.si_sigval
|
|
Packit |
6c4009 |
#define si_int _sifields._rt.si_sigval.sival_int
|
|
Packit |
6c4009 |
#define si_ptr _sifields._rt.si_sigval.sival_ptr
|
|
Packit |
6c4009 |
#define si_addr _sifields._sigfault.si_addr
|
|
Packit |
6c4009 |
#define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
|
Packit |
6c4009 |
#define si_lower _sifields._sigfault._bounds._addr_bnd._lower
|
|
Packit |
6c4009 |
#define si_upper _sifields._sigfault._bounds._addr_bnd._upper
|
|
Packit |
6c4009 |
#define si_pkey _sifields._sigfault._bounds._pkey
|
|
Packit |
6c4009 |
#define si_band _sifields._sigpoll.si_band
|
|
Packit |
6c4009 |
#define si_fd _sifields._sigpoll.si_fd
|
|
Packit |
6c4009 |
#if __SI_HAVE_SIGSYS
|
|
Packit |
6c4009 |
# define si_call_addr _sifields._sigsys._call_addr
|
|
Packit |
6c4009 |
# define si_syscall _sifields._sigsys._syscall
|
|
Packit |
6c4009 |
# define si_arch _sifields._sigsys._arch
|
|
Packit |
6c4009 |
#endif
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#endif
|