This is the mail archive of the
libc-hacker@sourceware.cygnus.com
mailing list for the glibc project.
patch to clean up generic signum.h
- To: drepper@cygnus.com, libc-hacker@cygnus.com
- Subject: patch to clean up generic signum.h
- From: Zack Weinberg <zack@rabi.columbia.edu>
- Date: Mon, 02 Nov 1998 16:17:45 -0500
This patch gives the signal names in the generic signum.h their
historical values where possible, tightens up standard compliance, and
fixes a bug where programs referring to SIG_IGN or SIG_DFL would get
link errors.
zw
1998-11-02 16:12 -0500 Zack Weinberg <zack@rabi.phys.columbia.edu>
* sysdeps/generic/bits/signum.h: Define signals with their
historical numbers when those are in the 1-15 range and
consistent across platforms.
Define POSIX signal names and _NSIG only if __USE_POSIX.
Define compatibility aliases (SIGIOT, SIGCLD) if __USE_MISC.
Define SIG_DFL, SIG_IGN, SIG_ERR as numeric constants cast
appropriately instead of with fake function declarations
(would cause link errors).
If __USE_UNIX98, define SIG_HOLD.
============================================================
Index: sysdeps/generic/bits/signum.h
--- sysdeps/generic/bits/signum.h 1997/10/13 03:53:18 1.1
+++ sysdeps/generic/bits/signum.h 1998/11/02 21:10:17
@@ -19,35 +19,50 @@
#ifdef _SIGNAL_H
/* Fake signal functions. */
-extern void _sig_ign __P ((int sig));
-extern void _sig_dfl __P ((int sig));
-#define SIG_ERR ((__sighandler_t) 0) /* Error return. */
-#define SIG_DFL _sig_dfl /* Default action. */
-#define SIG_IGN _sig_ign /* 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. */
+
+#ifdef __USE_UNIX98
+#define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */
+#endif
+
+/* Signals in the 1-15 range are defined with their historical numbers.
+ Signals in the 20-25 range are relatively new and have no ingrained
+ numbers. */
-
/* ANSI signals. */
-#define SIGABRT 1 /* Abnormal termination. */
-#define SIGFPE 2 /* Erroneous arithmetic operation. */
-#define SIGILL 3 /* Illegal instruction. */
-#define SIGINT 3 /* Interactive attention signal. */
-#define SIGSEGV 4 /* Invalid access to storage. */
-#define SIGTERM 5 /* Termination request. */
-
-/* POSIX signals. */
-#define SIGHUP 6 /* Hangup. */
-#define SIGQUIT 7 /* Quit. */
-#define SIGPIPE 8 /* Broken pipe. */
+#define SIGINT 2 /* Interactive attention signal. */
+#define SIGILL 4 /* Illegal instruction. */
+#define SIGABRT 6 /* Abnormal termination. */
+#define SIGFPE 8 /* Erroneous arithmetic operation. */
+#define SIGSEGV 11 /* Invalid access to storage. */
+#define SIGTERM 15 /* Termination request. */
+
+#ifdef __USE_POSIX
+/* Historical signals specified by POSIX. */
+#define SIGHUP 1 /* Hangup. */
+#define SIGQUIT 3 /* Quit. */
#define SIGKILL 9 /* Kill (cannot be blocked, caught, or ignored). */
-#define SIGALRM 10 /* Alarm clock. */
-#define SIGSTOP 11 /* Stop (cannot be blocked, caught, or ignored). */
-#define SIGTSTP 12 /* Keyboard stop. */
-#define SIGCONT 13 /* Continue. */
-#define SIGCHLD 14 /* Child terminated or stopped. */
-#define SIGTTIN 15 /* Background read from control terminal. */
-#define SIGTTOU 16 /* Background write to control terminal. */
+#define SIGPIPE 13 /* Broken pipe. */
+#define SIGALRM 14 /* Alarm clock. */
-#endif /* <signal.h> included. */
+/* New(er) POSIX signals. */
+#define SIGSTOP 20 /* Stop (cannot be blocked, caught, or ignored). */
+#define SIGCONT 21 /* Continue. */
+#define SIGTSTP 22 /* Keyboard stop. */
+#define SIGTTIN 23 /* Background read from control terminal. */
+#define SIGTTOU 24 /* Background write to control terminal. */
+#define SIGCHLD 25 /* Child terminated or stopped. */
+
+#define _NSIG 26
+#endif
+
+#ifdef __USE_MISC
+/* Archaic names for compatibility. */
+#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP11 */
+#define SIGCLD SIGCHLD /* Old System V name */
+#endif
-#define _NSIG 17
+#endif /* <signal.h> included. */