mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Remove __need macros from signal.h.
The types affected are __sig_atomic_t, sig_atomic_t, __sigset_t, sigset_t, sigval_t, sigevent_t, and siginfo_t. __sig_atomic_t is a scalar, so it's now directly available from bits/types.h. The others get bits/types/ headers. Side effects include: There have been small changes to which non-signal headers expose which subset of the signal-related types. A couple of architectures' nested siginfo_t fields had to be renamed to prevent undesired macro expansion. Internal code that wants to manipulate signal masks must now include <sigsetops.h> (which is not installed) and should be aware that __sigaddset, __sigandset, __sigdelset, __sigemptyset, and __sigorset no longer return a value (unlike the public API). Relatedly, the public signal.h no longer declares any of those functions. The obsolete sigmask() macro no longer has a system-specific definition -- in the cases where it matters, it didn't work anyway. New Linux architectures should create bits/siginfo-arch.h and/or bits/siginfo-consts-arch.h to customize their siginfo_t, rather than duplicating everything in bits/siginfo.h (which no longer exists). Add new __SI_* macros if necessary. Ports to other operating systems are strongly encouraged to generalize this scheme further. * bits/sigevent-consts.h * bits/siginfo-consts.h * bits/types/__sigset_t.h * bits/types/sigevent_t.h * bits/types/siginfo_t.h * sysdeps/unix/sysv/linux/bits/sigevent-consts.h * sysdeps/unix/sysv/linux/bits/siginfo-consts.h * sysdeps/unix/sysv/linux/bits/types/__sigset_t.h * sysdeps/unix/sysv/linux/bits/types/sigevent_t.h * sysdeps/unix/sysv/linux/bits/types/siginfo_t.h: New system-dependent bits headers. * sysdeps/unix/sysv/linux/bits/siginfo-arch.h * sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h * sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h * sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h * sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h * sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h * sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h * sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h * sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h: New Linux-only system-dependent bits headers. * signal/bits/types/sig_atomic_t.h * signal/bits/types/sigset_t.h * signal/bits/types/sigval_t.h: New non-system-dependent bits headers. * sysdeps/generic/sigsetops.h * sysdeps/unix/sysv/linux/sigsetops.h: New internal headers. * include/bits/types/sig_atomic_t.h * include/bits/types/sigset_t.h * include/bits/types/sigval_t.h: New wrappers. * signal/sigsetops.h * bits/siginfo.h * bits/sigset.h * sysdeps/unix/sysv/linux/bits/siginfo.h * sysdeps/unix/sysv/linux/bits/sigset.h * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h * sysdeps/unix/sysv/linux/mips/bits/siginfo.h * sysdeps/unix/sysv/linux/s390/bits/siginfo.h * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h * sysdeps/unix/sysv/linux/tile/bits/siginfo.h * sysdeps/unix/sysv/linux/x86/bits/siginfo.h: Deleted. * signal/Makefile, sysdeps/unix/sysv/linux/Makefile: Update lists of installed headers. * posix/bits/types.h: Define __sig_atomic_t here. * signal/signal.h: Use the new bits headers; no need to handle __need_sig_atomic_t nor __need_sigset_t. Don't use __sigmask to define sigmask. * include/signal.h: No need to handle __need_sig_atomic_t nor __need_sigset_t. Don't define __sigemptyset. * io/sys/poll.h, setjmp/setjmp.h * sysdeps/arm/sys/ucontext.h, sysdeps/generic/sys/ucontext.h * sysdeps/i386/sys/ucontext.h, sysdeps/m68k/sys/ucontext.h * sysdeps/mach/hurd/i386/bits/sigcontext.h * sysdeps/mips/sys/ucontext.h, sysdeps/powerpc/novmxsetjmp.h * sysdeps/pthread/bits/sigthread.h * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h * sysdeps/unix/sysv/linux/mips/sys/ucontext.h * sysdeps/unix/sysv/linux/nios2/sys/ucontext.h * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h * sysdeps/unix/sysv/linux/s390/sys/ucontext.h * sysdeps/unix/sysv/linux/sh/sys/ucontext.h * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h * sysdeps/unix/sysv/linux/tile/sys/ucontext.h * sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Use bits/types/__sigset_t.h. * misc/sys/select.h, posix/spawn.h * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h * sysdeps/unix/sysv/linux/sys/epoll.h * sysdeps/unix/sysv/linux/sys/signalfd.h: Use bits/types/sigset_t.h. * resolv/netdb.h, rt/mqueue.h: Use bits/types/sigevent_t.h. * rt/aio.h: Use bits/types/sigevent_t.h and bits/sigevent-consts.h. * socket/sys/socket.h: Don't include bits/sigset.h. * login/utmp_file.c, shadow/lckpwdf.c, signal/sigandset.c * signal/sigisempty.c, stdlib/abort.c, sysdeps/posix/profil.c * sysdeps/posix/sigignore.c, sysdeps/posix/sigintr.c * sysdeps/posix/signal.c, sysdeps/posix/sigset.c * sysdeps/posix/sprofil.c, sysdeps/posix/sysv_signal.c * sysdeps/unix/sysv/linux/nptl-signals.h: Include sigsetops.h. * signal/sigaddset.c, signal/sigandset.c, signal/sigdelset.c * signal/sigorset.c, stdlib/abort.c, sysdeps/posix/sigignore.c * sysdeps/posix/signal.c, sysdeps/posix/sigset.c: __sigaddset, __sigandset, __sigdelset, __sigemptyset, __sigorset now return no value. * signal/sigaddset.c, signal/sigdelset.c, signal/sigismem.c Include <errno.h>, <signal.h>, and <sigsetops.h> instead of "sigsetops.h". * signal/sigsetops.c: Explicitly define __sigismember, __sigaddset, and __sigdelset as compatibility symbols. * signal/Versions: Correct commentary on __sigpause, __sigaddset, __sigdelset, __sigismember. * inet/rcmd.c: Include sigsetops.h. Convert old code using __sigblock/__sigsetmask to use __sigprocmask and friends.
This commit is contained in:
@ -45,7 +45,8 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
||||
sys/timerfd.h sys/fanotify.h bits/eventfd.h bits/inotify.h \
|
||||
bits/signalfd.h bits/timerfd.h bits/epoll.h \
|
||||
bits/socket_type.h bits/syscall.h bits/sysctl.h \
|
||||
bits/mman-linux.h
|
||||
bits/mman-linux.h \
|
||||
bits/siginfo-arch.h bits/siginfo-consts-arch.h
|
||||
|
||||
tests += tst-clone tst-clone2 tst-fanotify tst-personality tst-quota \
|
||||
tst-sync_file_range test-errno-linux
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
41
sysdeps/unix/sysv/linux/bits/sigevent-consts.h
Normal file
41
sysdeps/unix/sysv/linux/bits/sigevent-consts.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* sigevent constants. Linux version.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_SIGEVENT_CONSTS_H
|
||||
#define _BITS_SIGEVENT_CONSTS_H 1
|
||||
|
||||
#if !defined _SIGNAL_H && !defined _AIO_H
|
||||
#error "Don't include <bits/sigevent-consts.h> directly; use <signal.h> instead."
|
||||
#endif
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread.
|
||||
This is a Linux extension. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif
|
7
sysdeps/unix/sysv/linux/bits/siginfo-arch.h
Normal file
7
sysdeps/unix/sysv/linux/bits/siginfo-arch.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
#define _BITS_SIGINFO_ARCH_H 1
|
||||
|
||||
/* This architecture has no adjustments to make to siginfo_t. */
|
||||
|
||||
#endif
|
7
sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h
Normal file
7
sysdeps/unix/sysv/linux/bits/siginfo-consts-arch.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* Architecture-specific additional siginfo constants. */
|
||||
#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
|
||||
#define _BITS_SIGINFO_CONSTS_ARCH_H 1
|
||||
|
||||
/* This architecture has no additional siginfo constants. */
|
||||
|
||||
#endif
|
185
sysdeps/unix/sysv/linux/bits/siginfo-consts.h
Normal file
185
sysdeps/unix/sysv/linux/bits/siginfo-consts.h
Normal file
@ -0,0 +1,185 @@
|
||||
/* siginfo constants. Linux version.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_SIGINFO_CONSTS_H
|
||||
#define _BITS_SIGINFO_CONSTS_H 1
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#error "Don't include <bits/siginfo-consts.h> directly; use <signal.h> instead."
|
||||
#endif
|
||||
|
||||
/* Most of these constants are uniform across all architectures, but there
|
||||
is one exception. */
|
||||
#define __SI_ASYNCIO_AFTER_SIGIO 1
|
||||
#include <bits/siginfo-arch.h>
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
#if __SI_ASYNCIO_AFTER_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
#else
|
||||
SI_MESGQ,
|
||||
SI_TIMER,
|
||||
SI_ASYNCIO,
|
||||
#endif
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
|
||||
#define SI_ASYNCNL SI_ASYNCNL
|
||||
#define SI_TKILL SI_TKILL
|
||||
#define SI_SIGIO SI_SIGIO
|
||||
#define SI_ASYNCIO SI_ASYNCIO
|
||||
#define SI_MESGQ SI_MESGQ
|
||||
#define SI_TIMER SI_TIMER
|
||||
#define SI_ASYNCIO SI_ASYNCIO
|
||||
#define SI_QUEUE SI_QUEUE
|
||||
#define SI_USER SI_USER
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Architectures might also add architecture-specific constants.
|
||||
These are all considered GNU extensions. */
|
||||
#ifdef __USE_GNU
|
||||
# include <bits/siginfo-consts-arch.h>
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,341 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. Linux version.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -1,124 +0,0 @@
|
||||
/* __sig_atomic_t, __sigset_t, and related definitions. Linux version.
|
||||
Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SIGSET_H_types
|
||||
# define _SIGSET_H_types 1
|
||||
|
||||
typedef int __sig_atomic_t;
|
||||
|
||||
/* A `sigset_t' has a bit for each signal. */
|
||||
|
||||
# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int __val[_SIGSET_NWORDS];
|
||||
} __sigset_t;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* We only want to define these functions if <signal.h> was actually
|
||||
included; otherwise we were included just to define the types. Since we
|
||||
are namespace-clean, it wouldn't hurt to define extra macros. But
|
||||
trouble can be caused by functions being defined (e.g., any global
|
||||
register vars declared later will cause compilation errors). */
|
||||
|
||||
#if !defined _SIGSET_H_fns && defined _SIGNAL_H
|
||||
# define _SIGSET_H_fns 1
|
||||
|
||||
# ifndef _EXTERN_INLINE
|
||||
# define _EXTERN_INLINE __extern_inline
|
||||
# endif
|
||||
|
||||
/* Return a mask that includes the bit for SIG only. */
|
||||
# define __sigmask(sig) \
|
||||
(((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
|
||||
|
||||
/* Return the word index for SIG. */
|
||||
# define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
|
||||
|
||||
# if defined __GNUC__ && __GNUC__ >= 2
|
||||
# define __sigemptyset(set) \
|
||||
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__set = (set); \
|
||||
while (--__cnt >= 0) __set->__val[__cnt] = 0; \
|
||||
0; }))
|
||||
# define __sigfillset(set) \
|
||||
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__set = (set); \
|
||||
while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; \
|
||||
0; }))
|
||||
|
||||
# ifdef __USE_GNU
|
||||
/* The POSIX does not specify for handling the whole signal set in one
|
||||
command. This is often wanted and so we define three more functions
|
||||
here. */
|
||||
# define __sigisemptyset(set) \
|
||||
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
|
||||
const sigset_t *__set = (set); \
|
||||
int __ret = __set->__val[--__cnt]; \
|
||||
while (!__ret && --__cnt >= 0) \
|
||||
__ret = __set->__val[__cnt]; \
|
||||
__ret == 0; }))
|
||||
# define __sigandset(dest, left, right) \
|
||||
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__dest = (dest); \
|
||||
const sigset_t *__left = (left); \
|
||||
const sigset_t *__right = (right); \
|
||||
while (--__cnt >= 0) \
|
||||
__dest->__val[__cnt] = (__left->__val[__cnt] \
|
||||
& __right->__val[__cnt]); \
|
||||
0; }))
|
||||
# define __sigorset(dest, left, right) \
|
||||
(__extension__ ({ int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__dest = (dest); \
|
||||
const sigset_t *__left = (left); \
|
||||
const sigset_t *__right = (right); \
|
||||
while (--__cnt >= 0) \
|
||||
__dest->__val[__cnt] = (__left->__val[__cnt] \
|
||||
| __right->__val[__cnt]); \
|
||||
0; }))
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* These functions needn't check for a bogus signal number -- error
|
||||
checking is done in the non __ versions. */
|
||||
|
||||
extern int __sigismember (const __sigset_t *, int);
|
||||
extern int __sigaddset (__sigset_t *, int);
|
||||
extern int __sigdelset (__sigset_t *, int);
|
||||
|
||||
# ifdef __USE_EXTERN_INLINES
|
||||
# define __SIGSETFN(NAME, BODY, CONST) \
|
||||
_EXTERN_INLINE int \
|
||||
NAME (CONST __sigset_t *__set, int __sig) \
|
||||
{ \
|
||||
unsigned long int __mask = __sigmask (__sig); \
|
||||
unsigned long int __word = __sigword (__sig); \
|
||||
return BODY; \
|
||||
}
|
||||
|
||||
__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const)
|
||||
__SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), )
|
||||
__SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), )
|
||||
|
||||
# undef __SIGSETFN
|
||||
# endif
|
||||
|
||||
|
||||
#endif /* ! _SIGSET_H_fns. */
|
10
sysdeps/unix/sysv/linux/bits/types/__sigset_t.h
Normal file
10
sysdeps/unix/sysv/linux/bits/types/__sigset_t.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef ____sigset_t_defined
|
||||
#define ____sigset_t_defined
|
||||
|
||||
#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
|
||||
typedef struct
|
||||
{
|
||||
unsigned long int __val[_SIGSET_NWORDS];
|
||||
} __sigset_t;
|
||||
|
||||
#endif
|
48
sysdeps/unix/sysv/linux/bits/types/sigevent_t.h
Normal file
48
sysdeps/unix/sysv/linux/bits/types/sigevent_t.h
Normal file
@ -0,0 +1,48 @@
|
||||
#ifndef __sigevent_t_defined
|
||||
#define __sigevent_t_defined 1
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
#include <bits/types.h>
|
||||
#include <bits/types/sigval_t.h>
|
||||
|
||||
#define __SIGEV_MAX_SIZE 64
|
||||
#if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
#else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
#endif
|
||||
|
||||
/* Forward declaration. */
|
||||
#ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
#endif
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
#define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
#endif
|
139
sysdeps/unix/sysv/linux/bits/types/siginfo_t.h
Normal file
139
sysdeps/unix/sysv/linux/bits/types/siginfo_t.h
Normal file
@ -0,0 +1,139 @@
|
||||
#ifndef __siginfo_t_defined
|
||||
#define __siginfo_t_defined 1
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
#include <bits/types.h>
|
||||
#include <bits/types/sigval_t.h>
|
||||
|
||||
#define __SI_MAX_SIZE 128
|
||||
#if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
#else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
#endif
|
||||
|
||||
/* Some fields of siginfo_t have architecture-specific variations. */
|
||||
#define __SI_ALIGNMENT /* nothing */
|
||||
#define __SI_BAND_TYPE long int
|
||||
#define __SI_CLOCK_T __clock_t
|
||||
#define __SI_ERRNO_THEN_CODE 1
|
||||
#define __SI_HAVE_SIGSYS 1
|
||||
#define __SI_SIGFAULT_ADDL /* nothing */
|
||||
#include <bits/siginfo-arch.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
#if __SI_ERRNO_THEN_CODE
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
#else
|
||||
int si_code;
|
||||
int si_errno;
|
||||
#endif
|
||||
#if __WORDSIZE == 64
|
||||
int __pad0; /* Explicit padding. */
|
||||
#endif
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__SI_CLOCK_T si_utime;
|
||||
__SI_CLOCK_T si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
__SI_SIGFAULT_ADDL
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
union
|
||||
{
|
||||
/* used when si_code=SEGV_BNDERR */
|
||||
struct
|
||||
{
|
||||
void *_lower;
|
||||
void *_upper;
|
||||
} _addr_bnd;
|
||||
/* used when si_code=SEGV_PKUERR */
|
||||
__uint32_t _pkey;
|
||||
} _bounds;
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
#if __SI_HAVE_SIGSYS
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
#endif
|
||||
} _sifields;
|
||||
} siginfo_t __SI_ALIGNMENT;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
#define si_pid _sifields._kill.si_pid
|
||||
#define si_uid _sifields._kill.si_uid
|
||||
#define si_timerid _sifields._timer.si_tid
|
||||
#define si_overrun _sifields._timer.si_overrun
|
||||
#define si_status _sifields._sigchld.si_status
|
||||
#define si_utime _sifields._sigchld.si_utime
|
||||
#define si_stime _sifields._sigchld.si_stime
|
||||
#define si_value _sifields._rt.si_sigval
|
||||
#define si_int _sifields._rt.si_sigval.sival_int
|
||||
#define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
#define si_addr _sifields._sigfault.si_addr
|
||||
#define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
#define si_lower _sifields._sigfault._bounds._addr_bnd._lower
|
||||
#define si_upper _sifields._sigfault._bounds._addr_bnd._upper
|
||||
#define si_pkey _sifields._sigfault._bounds._pkey
|
||||
#define si_band _sifields._sigpoll.si_band
|
||||
#define si_fd _sifields._sigpoll.si_fd
|
||||
#if __SI_HAVE_SIGSYS
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
#endif
|
||||
|
||||
#endif
|
@ -25,6 +25,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
19
sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h
Normal file
19
sysdeps/unix/sysv/linux/ia64/bits/siginfo-arch.h
Normal file
@ -0,0 +1,19 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. ia64 version. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
|
||||
#undef __SI_HAVE_SIGSYS
|
||||
#define __SI_HAVE_SIGSYS 0
|
||||
|
||||
#undef __SI_SIGFAULT_ADDL
|
||||
#define __SI_SIGFAULT_ADDL \
|
||||
int _si_imm; \
|
||||
unsigned int _si_flags; \
|
||||
unsigned long int _si_isr;
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define si_imm _sifields._sigfault._si_imm
|
||||
# define si_segvflags _sifields._sigfault._si_flags
|
||||
# define si_isr _sifields._sigfault._si_isr
|
||||
#endif
|
||||
|
||||
#endif
|
45
sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h
Normal file
45
sysdeps/unix/sysv/linux/ia64/bits/siginfo-consts-arch.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* Architecture-specific additional siginfo constants. ia64 version. */
|
||||
#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
|
||||
#define _BITS_SIGINFO_CONSTS_ARCH_H 1
|
||||
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_BADIADDR = ILL_BADSTK + 1, /* Unimplemented instruction address. */
|
||||
#define ILL_BADIADDR ILL_BADIADDR
|
||||
ILL_BREAK
|
||||
#define ILL_BREAK ILL_BREAK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_DECOVF = FPE_FLTSUB + 1,
|
||||
#define FPE_DECOVF FPE_DECOVF
|
||||
FPE_DECDIV,
|
||||
#define FPE_DECDIV FPE_DECDIV
|
||||
FPE_DECERR,
|
||||
#define FPE_DECERR FPE_DECERR
|
||||
FPE_INVASC,
|
||||
#define FPE_INVASC FPE_INVASC
|
||||
FPE_INVDEC
|
||||
#define FPE_INVDEC FPE_INVDEC
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_PSTKOVF = SEGV_ACCERR + 1
|
||||
#define SEGV_PSTKOVF SEGV_PSTKOVF
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRANCH = TRAP_TRACE + 1,
|
||||
#define TRAP_BRANCH TRAP_BRANCH
|
||||
TRAP_HWBKPT
|
||||
#define TRAP_HWBKPT TRAP_HWBKPT
|
||||
};
|
||||
|
||||
#endif
|
@ -1,360 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. Linux/ia64 version.
|
||||
Copyright (C) 2000-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
int __pad0; /* Explicit padding. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
int _si_imm;
|
||||
unsigned int _si_flags;
|
||||
unsigned long int _si_isr;
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
|
||||
# ifdef __USE_GNU
|
||||
# define si_imm _sifields._sigfault._si_imm
|
||||
# define si_segvflags _sifields._sigfault._si_flags
|
||||
# define si_isr _sifields._sigfault._si_isr
|
||||
# endif
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK, /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
ILL_BADIADDR /* Unimplemented instruction address. */
|
||||
# define ILL_BADIADDR ILL_BADIADDR
|
||||
|
||||
# ifdef __USE_GNU
|
||||
, ILL_BREAK
|
||||
# define ILL_BREAK ILL_BREAK
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
# ifdef __USE_GNU
|
||||
, FPE_DECOVF
|
||||
# define FPE_DECOVF FPE_DECOVF
|
||||
, FPE_DECDIV
|
||||
# define FPE_DECDIV FPE_DECDIV
|
||||
, FPE_DECERR
|
||||
# define FPE_DECERR FPE_DECERR
|
||||
, FPE_INVASC
|
||||
# define FPE_INVASC FPE_INVASC
|
||||
, FPE_INVDEC
|
||||
# define FPE_INVDEC FPE_INVDEC
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
# ifdef __USE_GNU
|
||||
, SEGV_PSTKOVF /* Paragraph stack overflow. */
|
||||
# define SEGV_PSTKOVF SEGV_PSTKOVF
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
|
||||
# ifdef __USE_GNU
|
||||
, TRAP_BRANCH
|
||||
# define TRAP_BRANCH TRAP_BRANCH
|
||||
, TRAP_HWBKPT
|
||||
# define TRAP_HWBKPT TRAP_HWBKPT
|
||||
# endif
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -25,6 +25,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
15
sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h
Normal file
15
sysdeps/unix/sysv/linux/mips/bits/siginfo-arch.h
Normal file
@ -0,0 +1,15 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. MIPS version. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
#define _BITS_SIGINFO_ARCH_H 1
|
||||
|
||||
/* MIPS has the si_code and si_errno fields in the opposite order from
|
||||
all other architectures. */
|
||||
#undef __SI_ERRNO_THEN_CODE
|
||||
#define __SI_ERRNO_THEN_CODE 0
|
||||
|
||||
/* MIPS also has different values for SI_ASYNCIO, SI_MESGQ, and SI_TIMER
|
||||
than all other architectures. */
|
||||
#undef __SI_ASYNCIO_AFTER_SIGIO
|
||||
#define __SI_ASYNCIO_AFTER_SIGIO 0
|
||||
|
||||
#endif
|
@ -1,344 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. Linux/MIPS version.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_code; /* Signal code. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int __pad0[__SI_MAX_SIZE / sizeof (int) - __SI_PAD_SIZE - 3];
|
||||
/* Explicit padding. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by real time mesq state change. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -24,6 +24,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -17,6 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <signal.h>
|
||||
#include <sigsetops.h>
|
||||
|
||||
/* The signal used for asynchronous cancelation. */
|
||||
#define SIGCANCEL __SIGRTMIN
|
||||
|
@ -19,13 +19,12 @@
|
||||
#define _SYS_UCONTEXT_H 1
|
||||
|
||||
#include <features.h>
|
||||
#define __need_sigset_t
|
||||
#include <signal.h>
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/sigset_t.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
#include <bits/types/stack_t.h>
|
||||
#include <bits/ss_flags.h>
|
||||
|
@ -1,341 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. S/390 version.
|
||||
Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
short si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -24,6 +24,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by in <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
108
sysdeps/unix/sysv/linux/sigsetops.h
Normal file
108
sysdeps/unix/sysv/linux/sigsetops.h
Normal file
@ -0,0 +1,108 @@
|
||||
/* __sigset_t manipulators. Linux version.
|
||||
Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SIGSETOPS_H
|
||||
#define _SIGSETOPS_H 1
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
/* Return a mask that includes the bit for SIG only. */
|
||||
# define __sigmask(sig) \
|
||||
(((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
|
||||
|
||||
/* Return the word index for SIG. */
|
||||
# define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
|
||||
|
||||
# define __sigemptyset(set) \
|
||||
(__extension__ ({ \
|
||||
int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__set = (set); \
|
||||
while (--__cnt >= 0) \
|
||||
__set->__val[__cnt] = 0; \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
# define __sigfillset(set) \
|
||||
(__extension__ ({ \
|
||||
int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__set = (set); \
|
||||
while (--__cnt >= 0) \
|
||||
__set->__val[__cnt] = ~0UL; \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
# define __sigisemptyset(set) \
|
||||
(__extension__ ({ \
|
||||
int __cnt = _SIGSET_NWORDS; \
|
||||
const sigset_t *__set = (set); \
|
||||
int __ret = __set->__val[--__cnt]; \
|
||||
while (!__ret && --__cnt >= 0) \
|
||||
__ret = __set->__val[__cnt]; \
|
||||
__ret == 0; \
|
||||
}))
|
||||
|
||||
# define __sigandset(dest, left, right) \
|
||||
(__extension__ ({ \
|
||||
int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__dest = (dest); \
|
||||
const sigset_t *__left = (left); \
|
||||
const sigset_t *__right = (right); \
|
||||
while (--__cnt >= 0) \
|
||||
__dest->__val[__cnt] = (__left->__val[__cnt] \
|
||||
& __right->__val[__cnt]); \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
# define __sigorset(dest, left, right) \
|
||||
(__extension__ ({ \
|
||||
int __cnt = _SIGSET_NWORDS; \
|
||||
sigset_t *__dest = (dest); \
|
||||
const sigset_t *__left = (left); \
|
||||
const sigset_t *__right = (right); \
|
||||
while (--__cnt >= 0) \
|
||||
__dest->__val[__cnt] = (__left->__val[__cnt] \
|
||||
| __right->__val[__cnt]); \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
/* These macros needn't check for a bogus signal number;
|
||||
error checking is done in the non-__ versions. */
|
||||
# define __sigismember(set, sig) \
|
||||
(__extension__ ({ \
|
||||
unsigned long int __mask = __sigmask (sig); \
|
||||
unsigned long int __word = __sigword (sig); \
|
||||
(set)->__val[__word] & __mask ? 1 : 0; \
|
||||
}))
|
||||
|
||||
# define __sigaddset(set, sig) \
|
||||
(__extension__ ({ \
|
||||
unsigned long int __mask = __sigmask (sig); \
|
||||
unsigned long int __word = __sigword (sig); \
|
||||
(set)->__val[__word] |= __mask; \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
# define __sigdelset(set, sig) \
|
||||
(__extension__ ({ \
|
||||
unsigned long int __mask = __sigmask (sig); \
|
||||
unsigned long int __word = __sigword (sig); \
|
||||
(set)->__val[__word] &= ~__mask; \
|
||||
(void)0; \
|
||||
}))
|
||||
|
||||
#endif /* bits/sigsetops.h */
|
14
sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
Normal file
14
sysdeps/unix/sysv/linux/sparc/bits/siginfo-arch.h
Normal file
@ -0,0 +1,14 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. SPARC version. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
#define _BITS_SIGINFO_ARCH_H 1
|
||||
|
||||
#undef __SI_BAND_TYPE
|
||||
#define __SI_BAND_TYPE int
|
||||
|
||||
#undef __SI_SIGFAULT_ADDL
|
||||
#define __SI_SIGFAULT_ADDL \
|
||||
int _si_trapno;
|
||||
|
||||
#define si_trapno _sifields._sigfault._si_trapno
|
||||
|
||||
#endif
|
12
sysdeps/unix/sysv/linux/sparc/bits/siginfo-consts-arch.h
Normal file
12
sysdeps/unix/sysv/linux/sparc/bits/siginfo-consts-arch.h
Normal file
@ -0,0 +1,12 @@
|
||||
/* Architecture-specific additional siginfo constants. SPARC version. */
|
||||
#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
|
||||
#define _BITS_SIGINFO_CONSTS_ARCH_H 1
|
||||
|
||||
/* `si_code' values for SIGEMT signal. */
|
||||
enum
|
||||
{
|
||||
EMT_TAGOVF = 1 /* Tag overflow. */
|
||||
#define EMT_TAGOVF EMT_TAGOVF
|
||||
};
|
||||
|
||||
#endif
|
@ -1,352 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. Linux/SPARC version.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
int si_trapno;
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_trapno _sifields._sigfault.si_trapno
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_GNU
|
||||
/* `si_code' values for SIGEMT signal. */
|
||||
enum
|
||||
{
|
||||
EMT_TAGOVF = 1 /* Tag overflow. */
|
||||
# define EMT_TAGOVF EMT_TAGOVF
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -23,6 +23,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
@ -21,13 +21,7 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Get __sigset_t. */
|
||||
#include <bits/sigset.h>
|
||||
|
||||
#ifndef __sigset_t_defined
|
||||
# define __sigset_t_defined
|
||||
typedef __sigset_t sigset_t;
|
||||
#endif
|
||||
#include <bits/types/sigset_t.h>
|
||||
|
||||
/* Get the platform-dependent flags. */
|
||||
#include <bits/epoll.h>
|
||||
|
@ -18,9 +18,8 @@
|
||||
#ifndef _SYS_SIGNALFD_H
|
||||
#define _SYS_SIGNALFD_H 1
|
||||
|
||||
#define __need_sigset_t
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
#include <bits/types/sigset_t.h>
|
||||
|
||||
/* Get the platform-dependent flags. */
|
||||
#include <bits/signalfd.h>
|
||||
|
11
sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h
Normal file
11
sysdeps/unix/sysv/linux/tile/bits/siginfo-arch.h
Normal file
@ -0,0 +1,11 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. Tile version. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
#define _BITS_SIGINFO_ARCH_H 1
|
||||
|
||||
#undef __SI_SIGFAULT_ADDL
|
||||
#define __SI_SIGFAULT_ADDL \
|
||||
int _si_trapno;
|
||||
|
||||
#define si_trapno _sifields._sigfault._si_trapno
|
||||
|
||||
#endif
|
14
sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h
Normal file
14
sysdeps/unix/sysv/linux/tile/bits/siginfo-consts-arch.h
Normal file
@ -0,0 +1,14 @@
|
||||
/* Architecture-specific additional siginfo constants. Tile version. */
|
||||
#ifndef _BITS_SIGINFO_CONSTS_ARCH_H
|
||||
#define _BITS_SIGINFO_CONSTS_ARCH_H 1
|
||||
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_DBLFLT = ILL_BADSTK + 1, /* Double fault. */
|
||||
#define ILL_DBLFLT ILL_DBLFLT
|
||||
ILL_HARDWALL /* User networks hardwall violation. */
|
||||
#define ILL_HARDWALL ILL_HARDWALL
|
||||
};
|
||||
|
||||
#endif
|
@ -1,347 +0,0 @@
|
||||
/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
int si_trapno; /* TRAP # which caused the signal. */
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_trapno _sifields._sigfault.si_trapno
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend, raise. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK, /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
ILL_DBLFLT, /* Double fault. */
|
||||
# define ILL_DBLFLT ILL_DBLFLT
|
||||
ILL_HARDWALL /* User networks hardwall violation. */
|
||||
# define ILL_HARDWALL ILL_HARDWALL
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -24,6 +24,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
19
sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h
Normal file
19
sysdeps/unix/sysv/linux/x86/bits/siginfo-arch.h
Normal file
@ -0,0 +1,19 @@
|
||||
/* Architecture-specific adjustments to siginfo_t. x86 version. */
|
||||
#ifndef _BITS_SIGINFO_ARCH_H
|
||||
#define _BITS_SIGINFO_ARCH_H 1
|
||||
|
||||
#if defined __x86_64__ && __WORDSIZE == 32
|
||||
/* si_utime and si_stime must be 4 byte aligned for x32 to match the
|
||||
kernel. We align siginfo_t to 8 bytes so that si_utime and
|
||||
si_stime are actually aligned to 8 bytes since their offsets are
|
||||
multiple of 8 bytes. Note: with some compilers, the alignment
|
||||
attribute would be ignored if it were put in __SI_CLOCK_T instead
|
||||
of encapsulated in a typedef. */
|
||||
typedef __clock_t __attribute__ ((__aligned__ (4))) __sigchld_clock_t;
|
||||
# undef __SI_ALIGNMENT
|
||||
# define __SI_ALIGNMENT __attribute__ ((__aligned__ (8)))
|
||||
# undef __SI_CLOCK_T
|
||||
# define __SI_CLOCK_T __sigchld_clock_t
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,360 +0,0 @@
|
||||
/* siginfo_t, sigevent and constants. Linux x86-64 version.
|
||||
Copyright (C) 2012-2017 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
|
||||
&& !defined __need_sigevent_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if (!defined __have_sigval_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|
||||
|| defined __need_sigevent_t))
|
||||
# define __have_sigval_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# if __WORDSIZE == 64
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
# if defined __x86_64__ && __WORDSIZE == 32
|
||||
/* si_utime and si_stime must be 4 byte aligned for x32 to match the
|
||||
kernel. We align siginfo_t to 8 bytes so that si_utime and si_stime
|
||||
are actually aligned to 8 bytes since their offsets are multiple of
|
||||
8 bytes. */
|
||||
typedef __clock_t __attribute__ ((__aligned__ (4))) __sigchld_clock_t;
|
||||
# define __SI_ALIGNMENT __attribute__ ((__aligned__ (8)))
|
||||
# else
|
||||
typedef __clock_t __sigchld_clock_t;
|
||||
# define __SI_ALIGNMENT
|
||||
# endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
int si_tid; /* Timer ID. */
|
||||
int si_overrun; /* Overrun count. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__sigchld_clock_t si_utime;
|
||||
__sigchld_clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
short int si_addr_lsb; /* Valid LSB of the reported address. */
|
||||
struct
|
||||
{
|
||||
void *_lower;
|
||||
void *_upper;
|
||||
} si_addr_bnd;
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
|
||||
/* SIGSYS. */
|
||||
struct
|
||||
{
|
||||
void *_call_addr; /* Calling user insn. */
|
||||
int _syscall; /* Triggering system call number. */
|
||||
unsigned int _arch; /* AUDIT_ARCH_* of syscall. */
|
||||
} _sigsys;
|
||||
} _sifields;
|
||||
} siginfo_t __SI_ALIGNMENT;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_timerid _sifields._timer.si_tid
|
||||
# define si_overrun _sifields._timer.si_overrun
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_addr_lsb _sifields._sigfault.si_addr_lsb
|
||||
# define si_lower _sifields._sigfault.si_addr_bnd._lower
|
||||
# define si_upper _sifields._sigfault.si_addr_bnd._upper
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
# define si_call_addr _sifields._sigsys._call_addr
|
||||
# define si_syscall _sifields._sigsys._syscall
|
||||
# define si_arch _sifields._sigsys._arch
|
||||
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
|
||||
# define SI_ASYNCNL SI_ASYNCNL
|
||||
SI_TKILL = -6, /* Sent by tkill. */
|
||||
# define SI_TKILL SI_TKILL
|
||||
SI_SIGIO, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER, /* Sent by kill, sigsend. */
|
||||
# define SI_USER SI_USER
|
||||
SI_KERNEL = 0x80 /* Send by kernel. */
|
||||
#define SI_KERNEL SI_KERNEL
|
||||
};
|
||||
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR, /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
BUS_MCEERR_AR, /* Hardware memory error: action required. */
|
||||
# define BUS_MCEERR_AR BUS_MCEERR_AR
|
||||
BUS_MCEERR_AO /* Hardware memory error: action optional. */
|
||||
# define BUS_MCEERR_AO BUS_MCEERR_AO
|
||||
};
|
||||
# endif
|
||||
|
||||
# ifdef __USE_XOPEN_EXTENDED
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
# endif
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
|
||||
&& !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# if __WORDSIZE == 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
|
||||
# else
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
# endif
|
||||
|
||||
/* Forward declaration. */
|
||||
# ifndef __have_pthread_attr_t
|
||||
typedef union pthread_attr_t pthread_attr_t;
|
||||
# define __have_pthread_attr_t 1
|
||||
# endif
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
/* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
|
||||
thread to receive the signal. */
|
||||
__pid_t _tid;
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) (sigval_t); /* Function to start. */
|
||||
pthread_attr_t *_attribute; /* Thread attributes. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD, /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
|
||||
SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
|
||||
#define SIGEV_THREAD_ID SIGEV_THREAD_ID
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
@ -23,6 +23,7 @@
|
||||
|
||||
/* We need the signal context definitions even if they are not exposed
|
||||
by <signal.h>. */
|
||||
#include <bits/types/__sigset_t.h>
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
#include <bits/types/struct_sigstack.h>
|
||||
|
Reference in New Issue
Block a user