aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/emacs.c4
-rw-r--r--src/sysdep.c10
-rw-r--r--src/syssignal.h15
3 files changed, 20 insertions, 9 deletions
diff --git a/src/emacs.c b/src/emacs.c
index 68d0ce31696..dac22ca1c23 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -407,9 +407,13 @@ main (argc, argv, envp)
407 signal (SIGEMT, fatal_error_signal); 407 signal (SIGEMT, fatal_error_signal);
408#endif 408#endif
409 signal (SIGFPE, fatal_error_signal); 409 signal (SIGFPE, fatal_error_signal);
410#ifdef SIGBUS
410 signal (SIGBUS, fatal_error_signal); 411 signal (SIGBUS, fatal_error_signal);
412#endif
411 signal (SIGSEGV, fatal_error_signal); 413 signal (SIGSEGV, fatal_error_signal);
414#ifdef SIGSYS
412 signal (SIGSYS, fatal_error_signal); 415 signal (SIGSYS, fatal_error_signal);
416#endif
413 signal (SIGTERM, fatal_error_signal); 417 signal (SIGTERM, fatal_error_signal);
414#ifdef SIGXCPU 418#ifdef SIGXCPU
415 signal (SIGXCPU, fatal_error_signal); 419 signal (SIGXCPU, fatal_error_signal);
diff --git a/src/sysdep.c b/src/sysdep.c
index a6c1bdfbb34..99df6865338 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2040,14 +2040,10 @@ static struct sigaction new_action, old_action;
2040 2040
2041init_signals () 2041init_signals ()
2042{ 2042{
2043#ifdef POSIX_SIGNALS 2043 sigemptyset (&empty_mask);
2044 sigemptyset (&signal_empty_mask); 2044 sigfillset (&full_mask);
2045 sigfillset (&signal_full_mask);
2046#endif
2047} 2045}
2048 2046
2049int (*signal_handler_t) ();
2050
2051signal_handler_t 2047signal_handler_t
2052sys_signal (int signal_number, signal_handler_t action) 2048sys_signal (int signal_number, signal_handler_t action)
2053{ 2049{
@@ -2417,6 +2413,7 @@ sys_write (fildes, buf, nbyte)
2417 * always negligible. Fred Fish, Unisoft Systems Inc. 2413 * always negligible. Fred Fish, Unisoft Systems Inc.
2418 */ 2414 */
2419 2415
2416#ifndef HAVE_SYS_SIGLIST
2420char *sys_siglist[NSIG + 1] = 2417char *sys_siglist[NSIG + 1] =
2421{ 2418{
2422#ifdef AIX 2419#ifdef AIX
@@ -2477,6 +2474,7 @@ char *sys_siglist[NSIG + 1] =
2477#endif /* not AIX */ 2474#endif /* not AIX */
2478 0 2475 0
2479 }; 2476 };
2477#endif HAVE_SYS_SIGLIST
2480 2478
2481/* 2479/*
2482 * Warning, this function may not duplicate 4.2 action properly 2480 * Warning, this function may not duplicate 4.2 action properly
diff --git a/src/syssignal.h b/src/syssignal.h
index dddaee80924..ad3958647f2 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -18,6 +18,9 @@ along with GNU Emacs; see the file COPYING. If not, write to
18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19 19
20#ifdef POSIX_SIGNALS 20#ifdef POSIX_SIGNALS
21
22#include <signal.h>
23
21#define SIGMASKTYPE sigset_t 24#define SIGMASKTYPE sigset_t
22 25
23#define SIGEMPTYMASK (empty_mask) 26#define SIGEMPTYMASK (empty_mask)
@@ -26,6 +29,7 @@ extern sigset_t empty_mask, full_mask, temp_mask;
26 29
27/* POSIX pretty much destroys any possibility of writing sigmask as a 30/* POSIX pretty much destroys any possibility of writing sigmask as a
28 macro in standard C. */ 31 macro in standard C. */
32#ifndef sigmask
29#ifdef __GNUC__ 33#ifdef __GNUC__
30#define sigmask(SIG) \ 34#define sigmask(SIG) \
31 ({ \ 35 ({ \
@@ -37,6 +41,7 @@ extern sigset_t empty_mask, full_mask, temp_mask;
37#else /* ! defined (__GNUC__) */ 41#else /* ! defined (__GNUC__) */
38#define sigmask(SIG) (sys_sigmask (SIG)) 42#define sigmask(SIG) (sys_sigmask (SIG))
39#endif /* ! defined (__GNUC__) */ 43#endif /* ! defined (__GNUC__) */
44#endif
40 45
41#define sigpause(SIG) sys_sigpause(SIG) 46#define sigpause(SIG) sys_sigpause(SIG)
42#define sigblock(SIG) sys_sigblock(SIG) 47#define sigblock(SIG) sys_sigblock(SIG)
@@ -45,9 +50,13 @@ extern sigset_t empty_mask, full_mask, temp_mask;
45#define sighold(SIG) ONLY_USED_IN_BSD_4_1 50#define sighold(SIG) ONLY_USED_IN_BSD_4_1
46#define sigrelse(SIG) ONLY_USED_IN_BSD_4_1 51#define sigrelse(SIG) ONLY_USED_IN_BSD_4_1
47 52
48int (*sys_signal (int signal_number, int (*action)())) (); 53/* Whether this is what all systems want or not, this is what
49int sys_sigpause (int signal_number); 54 appears to be assumed in the source, for example data.c:arith_error() */
50sigset_t sys_sigblock (sigset_t new_mask); 55typedef RETSIGTYPE (*signal_handler_t) (int);
56
57signal_handler_t sys_signal (int signal_number, int (*action)());
58int sys_sigpause (sigset_t new_mask);
59sigset_t sys_sigblock (sigset_t new_mask);
51sigset_t sys_sigunblock (sigset_t new_mask); 60sigset_t sys_sigunblock (sigset_t new_mask);
52sigset_t sys_sigsetmask (sigset_t new_mask); 61sigset_t sys_sigsetmask (sigset_t new_mask);
53 62