This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

patch to clean up generic signum.h



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.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]