X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f76840f36cf60feecaf21d55d24ace948800fef7..84c9ce0579c1f16670d15c486dc3ceeb3c103af1:/src/syssignal.h diff --git a/src/syssignal.h b/src/syssignal.h index 72ac1ed7f6..48eb722935 100644 --- a/src/syssignal.h +++ b/src/syssignal.h @@ -1,13 +1,13 @@ /* syssignal.h - System-dependent definitions for signals. Copyright (C) 1993, 1999, 2001, 2002, 2003, 2004, - 2005, 2006, 2007 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,19 +15,17 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ +along with GNU Emacs. If not, see . */ -extern void init_signals P_ ((void)); +extern void init_signals (void); -#ifdef HAVE_GTK_AND_PTHREAD +#if defined (HAVE_GTK_AND_PTHREAD) || defined (HAVE_NS) #include -extern pthread_t main_thread; +/* If defined, asynchronous signals delivered to a non-main thread are + forwarded to the main thread. */ +#define FORWARD_SIGNAL_TO_MAIN_THREAD #endif -#ifdef POSIX_SIGNALS - /* Don't #include . That header should always be #included before "config.h", because some configuration files (like s/hpux.h) indicate that SIGIO doesn't work by #undef-ing SIGIO. If this file @@ -67,90 +65,27 @@ extern sigset_t sys_sigmask (); #ifndef sigsetmask #define sigsetmask(SIG) sys_sigsetmask (SIG) #endif -#define sighold(SIG) ONLY_USED_IN_BSD_4_1 -#define sigrelse(SIG) ONLY_USED_IN_BSD_4_1 #undef signal #define signal(SIG,ACT) sys_signal(SIG,ACT) /* Whether this is what all systems want or not, this is what appears to be assumed in the source, for example data.c:arith_error. */ -typedef RETSIGTYPE (*signal_handler_t) (/*int*/); +typedef RETSIGTYPE (*signal_handler_t) (int); -signal_handler_t sys_signal P_ ((int signal_number, signal_handler_t action)); -sigset_t sys_sigblock P_ ((sigset_t new_mask)); -sigset_t sys_sigunblock P_ ((sigset_t new_mask)); -sigset_t sys_sigsetmask P_ ((sigset_t new_mask)); +signal_handler_t sys_signal (int signal_number, signal_handler_t action); +sigset_t sys_sigblock (sigset_t new_mask); +sigset_t sys_sigunblock (sigset_t new_mask); +sigset_t sys_sigsetmask (sigset_t new_mask); #define sys_sigdel(MASK,SIG) sigdelset (&MASK,SIG) -#else /* ! defined (POSIX_SIGNALS) */ -#ifdef USG5_4 - -extern SIGMASKTYPE sigprocmask_set; - -#ifndef sigblock -#define sigblock(sig) \ - (sigprocmask_set = SIGEMPTYMASK | (sig), \ - sigprocmask (SIG_BLOCK, &sigprocmask_set, NULL)) -#endif - -#ifndef sigunblock -#define sigunblock(sig) \ - (sigprocmask_set = SIGFULLMASK & ~(sig), \ - sigprocmask (SIG_SETMASK, &sigprocmask_set, NULL)) -#endif - -#else -#ifdef USG - -#ifndef sigunblock -#define sigunblock(sig) -#endif - -#else - -#ifndef sigunblock -#define sigunblock(SIG) \ -{ SIGMASKTYPE omask = sigblock (SIGEMPTYMASK); sigsetmask (omask & ~SIG); } -#endif - -#endif /* ! defined (USG) */ -#endif /* ! defined (USG5_4) */ -#endif /* ! defined (POSIX_SIGNALS) */ - -#ifndef SIGMASKTYPE -#define SIGMASKTYPE int -#endif - -#ifndef SIGEMPTYMASK -#define SIGEMPTYMASK (0) -#endif - -#ifndef SIGFULLMASK -#define SIGFULLMASK (0xffffffff) -#endif - -#ifndef sigmask -#define sigmask(no) (1L << ((no) - 1)) -#endif - -#ifndef sigunblock -#define sigunblock(SIG) \ -{ SIGMASKTYPE omask = sigblock (SIGFULLMASK); sigsetmask (omask & ~SIG); } -#endif - -#ifndef BSD4_1 #define sigfree() sigsetmask (SIGEMPTYMASK) -#endif /* not BSD4_1 */ #if defined (SIGINFO) && defined (BROKEN_SIGINFO) #undef SIGINFO #endif #if defined (SIGIO) && defined (BROKEN_SIGIO) # undef SIGIO -# if defined (__Lynx__) -# undef SIGPOLL /* Defined as SIGIO on LynxOS */ -# endif #endif #if defined (SIGPOLL) && defined (BROKEN_SIGPOLL) #undef SIGPOLL @@ -176,11 +111,6 @@ extern SIGMASKTYPE sigprocmask_set; # define NSIG NSIG_MINIMUM #endif -#ifdef BSD4_1 -#define SIGIO SIGTINT -/* sigfree is in sysdep.c */ -#endif /* BSD4_1 */ - /* On bsd, [man says] kill does not accept a negative number to kill a pgrp. Must do that using the killpg call. */ #ifdef BSD_SYSTEM @@ -195,20 +125,19 @@ extern SIGMASKTYPE sigprocmask_set; /* Define SIGCHLD as an alias for SIGCLD. There are many conditionals testing SIGCHLD. */ -#ifndef VMS #ifdef SIGCLD #ifndef SIGCHLD #define SIGCHLD SIGCLD #endif /* SIGCHLD */ #endif /* ! defined (SIGCLD) */ -#endif /* VMS */ #ifndef HAVE_STRSIGNAL /* strsignal is in sysdep.c */ -char *strsignal (); +char *strsignal (int); #endif -#ifdef HAVE_GTK_AND_PTHREAD +#ifdef FORWARD_SIGNAL_TO_MAIN_THREAD +extern pthread_t main_thread; #define SIGNAL_THREAD_CHECK(signo) \ do { \ if (!pthread_equal (pthread_self (), main_thread)) \ @@ -227,8 +156,8 @@ char *strsignal (); } \ } while (0) -#else /* not HAVE_GTK_AND_PTHREAD */ +#else /* not FORWARD_SIGNAL_TO_MAIN_THREAD */ #define SIGNAL_THREAD_CHECK(signo) -#endif /* not HAVE_GTK_AND_PTHREAD */ +#endif /* not FORWARD_SIGNAL_TO_MAIN_THREAD */ /* arch-tag: 4580e86a-340d-4574-9e11-a742b6e1a152 (do not change this comment) */