diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-12-04 00:12:34 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-12-04 00:12:34 +0000 |
commit | cbdee2790df9dac548fb3157cfaf7aceb0f40034 (patch) | |
tree | 566a6db9f880efdd95cb05a92d37a4c7ef6b8092 /sysdeps/unix/sysv/linux/bits | |
parent | 04be94a87d0a74c022490db7f4f926253f0d69d3 (diff) | |
download | glibc-cbdee2790df9dac548fb3157cfaf7aceb0f40034.tar.gz |
Update.cvs/libc-ud-971204
1997-12-03 23:50 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig: Add shared-thread-library variable.
* math/Makfile (CPPFLAGS): Add -D__LIBC_INTERNAL_MATH_INLINES.
* sysdeps/i386/Makefile: Don't define ___LIBC_INTERNAL_MATH_INLINES
here.
* sysdeps/m68k/fpu/e_acos.c: Likewise.
* sysdeps/m68k/fpu/e_atan2.c: Likewise.
* sysdeps/m68k/fpu/e_fmod.c: Likewise.
* sysdeps/m68k/fpu/e_pow.c: Likewise.
* sysdeps/m68k/fpu/e_scalb.c: Likewise.
* sysdeps/m68k/fpu/k_cos.c: Likewise.
* sysdeps/m68k/fpu/k_sin.c: Likewise.
* sysdeps/m68k/fpu/k_tan.c: Likewise.
* sysdeps/m68k/fpu/s_atan.c: Likewise.
* sysdeps/m68k/fpu/s_ccos.c: Likewise.
* sysdeps/m68k/fpu/s_ccosh.c: Likewise.
* sysdeps/m68k/fpu/s_cexp.c: Likewise.
* sysdeps/m68k/fpu/s_csin.c: Likewise.
* sysdeps/m68k/fpu/s_csinh.c: Likewise.
* sysdeps/m68k/fpu/s_frexp.c: Likewise.
* sysdeps/m68k/fpu/s_ilogb.c: Likewise.
* sysdeps/m68k/fpu/s_isinf.c: Likewise.
* sysdeps/m68k/fpu/s_llrint.c: Likewise.
* sysdeps/m68k/fpu/s_llrintf.c: Likewise.
* sysdeps/m68k/fpu/s_llrintl.c: Likewise.
* sysdeps/m68k/fpu/s_lrint.c: Likewise.
* sysdeps/m68k/fpu/s_modf.c: Likewise.
* sysdeps/m68k/fpu/s_remquo.c: Likewise.
* sysdeps/m68k/fpu/s_scalbn.c: Likewise.
* sysdeps/m68k/fpu/s_sincos.c: Likewise.
* libc.map: Add __libc_current_sigrtmin, __libc_current_sigrtmax,
__libc_allocate_rtsig, sigqueue, sigtimedwait, sigwaitinfo.
* signal/Makefile (headers): Add bits/siginfo.h.
(routines): Add allocrtsig, sigtimedwait, sigwaitinfo, sigqueue.
(distribute): Add testrtsig.h.
* signal/allocrtsig.c: New file.
* signal/signal.h: Define `union sigval'. Include <bits/siginfo.h>.
Declare sigwaitinfo, sigtimedwait, sigqueue, __libc_current_sigrtmin,
__libc_current_sigrtmax.
* sysdeps/generic/sigqueue.c: New file.
* sysdeps/generic/sigtimedwait.c: New file.
* sysdeps/generic/sigwaitinfo.c: New file.
* sysdeps/generic/testrtsig.h: New file.
* sysdeps/generic/bits/siginfo.h: New file.
* sysdeps/unix/sysv/linux/bits/siginfo.h: New file.
* sysdeps/unix/sysv/linux/kernel_sigaction.h: Define struct as
old_kernel_sigaction and rename sa_handler member to k_sa_handler.
* sysdeps/unix/sysv/linux/rt_sigaction.c: New file.
* sysdeps/unix/sysv/linux/rt_sigprocmask.c: New file.
* sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: New file.
* sysdeps/unix/sysv/linux/rt_sigreturn.c: New file.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: New file.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: New file.
* sysdeps/unix/sysv/linux/sigpending.c: New file.
* sysdeps/unix/sysv/linux/sigprocmask.c: New file.
* sysdeps/unix/sysv/linux/sigqueue.c: New file.
* sysdeps/unix/sysv/linux/sigreturn.c: New file.
* sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
* sysdeps/unix/sysv/linux/testrtsig.h: New file.
* sysdeps/unix/sysv/linux/sigsuspend.c: Update for AIO.
* sysdeps/unix/sysv/linux/syscalls.list: Update for AIO.
* sysdeps/unix/sysv/linux/sigaction.c: Update for AIO.
* sysdeps/unix/sysv/linux/bits/local_lim.h: Define AIO_PRIO_DELTA_MAX.
* sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _XOPEN_REALTIME
and _POSIX_REALTIME_SIGNALS.
* sysdeps/unix/sysv/linux/bits/sigaction.h: Update for AIO.
* sysdeps/unix/sysv/linux/bits/signum.h: Define SIGRTMIN/MAX and
update _NSIG.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Update for AIO.
* sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Linux/i386 specific
definitions.
* Makefile (subdirs): Add rt.
* shlib-versions: Add entry for librt.
* rt/Makefile: New file.
* rt/aio.h: New file.
* rt/aio_cancel.c: New file.
* rt/aio_error.c: New file.
* rt/aio_fsync.c: New file.
* rt/aio_misc.c: New file.
* rt/aio_misc.h: New file.
* rt/aio_read.c: New file.
* rt/aio_read64.c: New file.
* rt/aio_return.c: New file.
* rt/aio_suspend.c: New file.
* rt/aio_write.c: New file.
* rt/aio_write64.c: New file.
* rt/lio_listio.c: New file.
* rt/lio_listio64.c: New file.
* sysdeps/generic/aio_sigqueue.c: New file.
* sysdeps/unix/sysv/linux/aio_sigqueue.c: New file.
* sysdeps/unix/sysv/linux/Dist: Add new files
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=signal]
(sysdep_routines): Add rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait,
rt_sigqueueinfo, rt_sigaction.
* posix/Makefile (headers): Add bits/environments.h.
* posix/confstr.c: Correctly handle _CS_XBS5_ILP32_OFFBIG_CFLAGS
and _CS_LFS_CFLAGS on 64bit platforms.
* posix/unistd.h: Define _XOPEN_LEGACY. Explain _XOPEN_REALTIME
and _XOPEN_REALTIME_THREADS. Include bits/environments.h.
* sysdeps/generic/bits/confname.h: Define _SC_* constants for
compilation modules.
* sysdeps/wordsize-32/bits/environments.h: New file.
* sysdeps/wordsize-64/bits/environments.h: New file.
* posix/getopt.c: Remove declaration of getpid and __libc_pid.
* posix/getopt_init.c: Test for value 0xf00baa of uninitialized
__libc_pid.
* sysdeps/unix/sysv/linux/init-first.c: Initialize __libc_pid to
0xf00baa.
* string/string.h: Add declaration of __strverscmp.
* string/strverscmp.c: Rename function ot __strverscmp and make old
name weak alias.
* sysdeps/generic/dl-sysdep.c: Declare and define __libc_uid.
* sysdeps/generic/enbl-secure.c: Likewise.
* sysdeps/mach/hurd/dl-sysdep.c: Likewise.
* sysdeps/unix/sysv/linux/bits/sigset.h: Pretty print.
* sysdeps/unix/sysv/linux/sys/pci.h: New file.
1997-12-03 Ulrich Drepper <drepper@cygnus.com>
* posix/sys/wait.h: Use __transparent_union__ instead of
transparent_union. Reported by Roland McGrath.
1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* resolv/inet_neta.c (inet_neta): Change type of first parameter
to u_int32_t. Suggested by John Lavagnino <John_Lavagnino@Brown.edu>
[PR libc/366].
* resolv/inet_addr.c (inet_addr): Change return type to u_int32_t.
* inet/arpa/inet.h: Change types of inet_neta and inet_addr.
1997-12-03 20:40 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* grp/initgroups.c: Increase buffer if it is too small.
1997-12-03 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/netinet/ip.h: Don't use u_int8_t for bit
fields, this is no ISO C. Reported by Andreas Jaeger.
1997-12-03 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/i386/sys/ucontext.h (enum): Add missing commata.
1997-12-03 08:58 Philip Blundell <pb@nexus.co.uk>
* sysdeps/generic/bits/utsname.h: <sys/utsname.h> defines
_SYS_UTSNAME_H not _UTSNAME_H.
1997-11-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-profile.c (_dl_start_profile): Avoid overflow when
computing s_scale.
1997-11-29 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/libm-ieee754/s_csqrt.c: Use different formula for now.
* sysdeps/libm-ieee754/s_csqrtf.c: Likewise.
* sysdeps/libm-ieee754/s_csqrtl.c: Likewise.
* math/libm-test.c (csqrt_test): Add testcase.
1997-12-03 15:44 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/sys/ultrasound.h: New file.
* sysdeps/unix/sysv/linux/sys/Dist: Add it.
* sysdeps/unix/sysv/linux/sys/Makefile [$(subdir)=misc]: Likewise.
1997-11-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/sys/timex.h: Fix declaration.
1997-12-01 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/libm-test.c (acos_test): Add more tests.
(asin_test): Likewise.
(atan_test): Likewise.
(exp_test): Likewise.
(sin_test): Likewise.
(sqrt_test): Likewise.
(cpow_test): Likewise.
(csqrt_test): Likewise.
(cexp_test): Correct typo in gcc version test.
1997-12-02 17:14 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/__longjmp.S: Define _SETJMP_H before including
<bits/setjmp.h>.
* sysdeps/arm/setjmp.S: Likewise.
* sysdeps/unix/sysv/linux/arm/bits/mman.h: New file.
1997-12-02 18:07 Philip Blundell <pb@nexus.co.uk>
* stdio/stdio.h: Add prototype for tmpfile64().
1997-12-02 17:47 Philip Blundell <pb@nexus.co.uk>
* stdio/stdio.h (__stdio_gen_tempname): Add extra argument to
prototype to keep in step with libio version.
* stdio-common/tmpfile64.c: Include <errno.h> for ENOSYS.
1997-12-02 17:41 Philip Blundell <pb@nexus.co.uk>
* sysdeps/generic/Makefile: Don't try to use make_siglist if
cross-compiling.
1997-12-02 01:18 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/clone.S: When cloned process returns
load GOT ptr before jumping to _exit.
Reported by Xavier Leroy.
Diffstat (limited to 'sysdeps/unix/sysv/linux/bits')
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/local_lim.h | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/posix_opt.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/sigaction.h | 22 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/siginfo.h | 257 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/signum.h | 21 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/sigset.h | 38 |
6 files changed, 321 insertions, 31 deletions
diff --git a/sysdeps/unix/sysv/linux/bits/local_lim.h b/sysdeps/unix/sysv/linux/bits/local_lim.h index 7ce423061a..2674aa709e 100644 --- a/sysdeps/unix/sysv/linux/bits/local_lim.h +++ b/sysdeps/unix/sysv/linux/bits/local_lim.h @@ -1,5 +1,5 @@ /* Minimum guaranteed maximum values for system limits. Linux version. - Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1996, 1997 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 @@ -19,3 +19,7 @@ /* The kernel sources contain a file with all the needed information. */ #include <linux/limits.h> + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 diff --git a/sysdeps/unix/sysv/linux/bits/posix_opt.h b/sysdeps/unix/sysv/linux/bits/posix_opt.h index e9f8b7f8f3..5ef6d0563d 100644 --- a/sysdeps/unix/sysv/linux/bits/posix_opt.h +++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h @@ -1,5 +1,5 @@ /* Define POSIX options for Linux. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 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 @@ -67,7 +67,13 @@ /* Filenames are not silently truncated. */ #define _POSIX_NO_TRUNC 1 +/* X/Open realtime support is available. */ +#define _XOPEN_REALTIME 1 + /* XPG4.2 shared memory is supported. */ #define _XOPEN_SHM 1 +/* Real-time signals are supported. */ +#define _POSIX_REALTIME_SIGNALS 1 + #endif /* bits/posix_opt.h */ diff --git a/sysdeps/unix/sysv/linux/bits/sigaction.h b/sysdeps/unix/sysv/linux/bits/sigaction.h index 1806bb2e92..b6637e5205 100644 --- a/sysdeps/unix/sysv/linux/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/bits/sigaction.h @@ -25,7 +25,16 @@ struct sigaction { /* Signal handler. */ - __sighandler_t sa_handler; + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) __P ((int, siginfo_t *, void *)); + } + __sigaction_handler; +#define sa_handler __sigaction_handler.sa_handler +#define sa_sigaction __sigaction_handler.sa_sigaction /* Additional set of signals to be blocked. */ __sigset_t sa_mask; @@ -39,17 +48,22 @@ struct sigaction /* Bits in `sa_flags'. */ #define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ -#ifdef __USE_MISC -# define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ +#define SA_SIGINFO 4 /* Invoke signal-catching function with + three arguments instead of one. */ +#if defined __USE_UNIX98 || defined __USE_MISC +# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ # define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ -# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ # define SA_NODEFER 0x40000000 /* Don't automatically block the signal when its handler is being executed. */ # define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ +#endif +#ifdef __USE_MISC +# define SA_INTERRUPT 0x20000000 /* Historical no-op. */ /* Some aliases for the SA_ constants. */ # define SA_NOMASK SA_NODEFER # define SA_ONESHOT SA_RESETHAND +# define SA_STACK SA_ONSTACK #endif /* Values for the HOW argument to `sigprocmask'. */ diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h new file mode 100644 index 0000000000..42030abc4f --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/siginfo.h @@ -0,0 +1,257 @@ +/* siginfo_t, sigevent and constants. Linux version. + Copyright (C) 1997 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SIGNAL_H +# error "Never include this file directly. Use <signal.h> instead" +#endif + +#define SI_MAX_SIZE 128 +#define SI_PAD_SIZE ((SI_MAX_SIZE / sizeof (int)) - 3) + +typedef struct siginfo + { + 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 + { + unsigned int _timer1; + unsigned int _timer2; + } _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. */ + 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. */ + } _sigfault; + + /* SIGPOLL. */ + struct + { + 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_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_band _sifields._sigpoll.si_band +#define si_fd _sifields._sigpoll.si_fd + + +/* Values for `si_code'. Positive values are reserved for kernel-generated + signals. */ +enum +{ + SI_ASYNCIO = -4, /* 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_code' values for SIGILL signal. */ +enum +{ + ILL_ILLOPC = 1, /* Illegal opcode. */ +#define ILL_ILLOPC ILL_ILLOPC + ILL_ILL_OPN, /* 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 +}; + +/* `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 +}; + +/* `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 +}; + + +/* Structure to transport application-defined values with signals. */ +#define SIGEV_MAX_SIZE 64 +#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE / sizeof (int)) - 3) + +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[SIGEV_PAD_SIZE]; + + struct + { + void (*_function) __P ((sigval_t)); /* Function to start. */ + void *_attribute; /* Really pthread_attr_t. */ + } _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 +}; diff --git a/sysdeps/unix/sysv/linux/bits/signum.h b/sysdeps/unix/sysv/linux/bits/signum.h index d8a716f2e0..f625f468e9 100644 --- a/sysdeps/unix/sysv/linux/bits/signum.h +++ b/sysdeps/unix/sysv/linux/bits/signum.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux version. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997 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 @@ -20,9 +20,9 @@ #ifdef _SIGNAL_H /* Fake signal functions. */ -#define SIG_ERR ((__sighandler_t) -1) /* Error return. */ -#define SIG_DFL ((__sighandler_t) 0) /* Default action. */ -#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ +#define SIG_ERR ((__sighandler_t) -1) /* Error return. */ +#define SIG_DFL ((__sighandler_t) 0) /* Default action. */ +#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ /* Signals. */ @@ -42,7 +42,7 @@ #define SIGPIPE 13 /* Broken pipe (POSIX). */ #define SIGALRM 14 /* Alarm clock (POSIX). */ #define SIGTERM 15 /* Termination (ANSI). */ -#define SIGSTKFLT 16 /* ??? */ +#define SIGSTKFLT 16 /* Stack fault. */ #define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ #define SIGCHLD 17 /* Child status has changed (POSIX). */ #define SIGCONT 18 /* Continue (POSIX). */ @@ -61,6 +61,15 @@ #define SIGPWR 30 /* Power failure restart (System V). */ #define SIGUNUSED 31 -#define _NSIG 32 /* Biggest signal number + 1. */ +#define _NSIG 64 /* Biggest signal number + 1 + (including real-time signals). */ + +#define SIGRTMIN (__libc_current_sigrtmin ()) +#define SIGRTMAX (__libc_current_sigrtmax ()) + +/* These are the hard limits of the kernel. These values should not be + used directly at user level. */ +#define __SIGRTMIN 32 +#define __SIGRTMAX (_NSIG - 1) #endif /* <signal.h> included. */ diff --git a/sysdeps/unix/sysv/linux/bits/sigset.h b/sysdeps/unix/sysv/linux/bits/sigset.h index 741ff9ac9d..14f30cbfd8 100644 --- a/sysdeps/unix/sysv/linux/bits/sigset.h +++ b/sysdeps/unix/sysv/linux/bits/sigset.h @@ -18,13 +18,13 @@ Boston, MA 02111-1307, USA. */ #ifndef _SIGSET_H_types -#define _SIGSET_H_types 1 +# 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))) +# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) typedef struct { unsigned long int __val[_SIGSET_NWORDS]; @@ -39,44 +39,44 @@ typedef struct 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 +#if !defined _SIGSET_H_fns && defined _SIGNAL_H +# define _SIGSET_H_fns 1 -#ifndef _EXTERN_INLINE -#define _EXTERN_INLINE extern __inline -#endif +# ifndef _EXTERN_INLINE +# define _EXTERN_INLINE extern __inline +# endif /* Return a mask that includes the bit for SIG only. */ -#define __sigmask(sig) \ - (((unsigned long) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) +# 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 __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int))) -#if defined __GNUC__ && __GNUC__ >= 2 -# define __sigemptyset(set) \ +# 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) \ +# define __sigfillset(set) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__set = (set); \ while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; \ 0; })) -# ifdef _GNU_SOURCE +# 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) \ +# 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) \ +# define __sigandset(dest, left, right) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__dest = (dest); \ const sigset_t *__left = (left); \ @@ -85,7 +85,7 @@ typedef struct __dest->__val[__cnt] = (__left->__val[__cnt] \ & __right->__val[__cnt]); \ 0; })) -# define __sigorset(dest, left, right) \ +# define __sigorset(dest, left, right) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__dest = (dest); \ const sigset_t *__left = (left); \ @@ -94,8 +94,8 @@ typedef struct __dest->__val[__cnt] = (__left->__val[__cnt] \ | __right->__val[__cnt]); \ 0; })) +# endif # endif -#endif /* These functions needn't check for a bogus signal number -- error checking is done in the non __ versions. */ @@ -104,7 +104,7 @@ extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); -#define __SIGSETFN(NAME, BODY, CONST) \ +# define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ { \ |