aboutsummaryrefslogtreecommitdiffstats
path: root/src/blockinput.h
diff options
context:
space:
mode:
authorPaul Eggert2012-09-12 19:21:28 -0700
committerPaul Eggert2012-09-12 19:21:28 -0700
commit4a4bbad21472cc0ede4691cbdbf8117b655b574f (patch)
tree5c74092d854ca8b770578b8b7f99f5f3a9e65ca2 /src/blockinput.h
parentbd8d610845a89c2cf5d7d75ff552df572b30f5e7 (diff)
downloademacs-4a4bbad21472cc0ede4691cbdbf8117b655b574f.tar.gz
emacs-4a4bbad21472cc0ede4691cbdbf8117b655b574f.zip
Simplify SIGIO usage.
The code that dealt with SIGIO was crufty and confusing, e.g., it played tricks like "#undef SIGIO" but these tricks were not used consistently. Simplify mostly by not #undeffing standard symbols, e.g., use "defined USABLE_SIGIO" (our symbol, which we can define or not as we please) rather than "defined SIGIO" (standard symbol that we probably shouldn't #undef). * configure.ac (NO_TERMIO, BROKEN_FIONREAD, BROKEN_SIGAIO) (BROKEN_SIGPOLL, BROKEN_SIGPTY): Remove. (USABLE_FIONREAD, USABLE_SIGIO): New symbols. All uses of 'defined SIGIO' replaced with 'defined USABLE_SIGIO', with no need to #undef SIGIO now (which was error-prone). Likewise, all uses of 'defined FIONREAD' replaced with 'defined USABLE_FIONREAD'. * src/admin/CPP_DEFINES (BROKEN_SIGAIO, BROKEN_SIGIO, BROKEN_SIGPOLL) (BROKEN_SIGPTY, NO_TERMIO): Remove. * src/conf_post.h [USG5_4]: Do not include <sys/wait.h> here. Modules that need it can include it. [USG5_4 && emacs]: Likewise, do not include the streams stuff here. * src/dispextern.h (ignore_sigio): New decl. * src/emacs.c (shut_down_emacs): Invoke unrequest_sigio unconditionally, since it's now a no-op if !USABLE_SIGIO. * src/emacs.c (shut_down_emacs): * src/keyboard.c (kbd_buffer_store_event_hold): Use ignore_sigio rather than invoking 'signal' directly. * src/keyboard.c (USABLE_FIONREAD && USG5_4): Include <sys/filio.h>, for FIONREAD. (FIONREAD, SIGIO): Do not #undef. (tty_read_avail_input): Use #error rather than a syntax error. * src/process.c [USG5_4]: Include <sys/stream.h> and <sys/stropts.h>, for I_PIPE, used by SETUP_SLAVE_PTY. (DATAGRAM_SOCKETS): Simplify defn, based on USABLE_FIONREAD. * src/sysdep.c (croak): Remove; no longer needed. This bit of temporary code, with Fred N. Fish's comment that it's temporary, has been in Emacs since at least 1992! (init_sigio, reset_sigio, request_sigio, unrequest_sigio): Arrange for them to be no-ops in all cases when ! USABLE_SIGIO. * src/syssignal.h (croak): Remove decl. (SIGIO, SIGPOO, SIGAIO, SIGPTY): Do not #undef; that's too fragile. * src/systty.h [!NO_TERMIO]: Do not include <termio.h>; no longer needed now that we're termios-only. (FIONREAD, ASYNC) [BROKEN_FIONREAD]: Do not #undef. * src/term.c (dissociate_if_controlling_tty): Use #error rather than a run-time error. Fixes: debbugs:12408
Diffstat (limited to 'src/blockinput.h')
-rw-r--r--src/blockinput.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/blockinput.h b/src/blockinput.h
index 3f61b2b27b9..7501bfc91a0 100644
--- a/src/blockinput.h
+++ b/src/blockinput.h
@@ -67,15 +67,10 @@ extern int pending_atimers;
67 If doing signal-driven input, and a signal came in when input was 67 If doing signal-driven input, and a signal came in when input was
68 blocked, reinvoke the signal handler now to deal with it. 68 blocked, reinvoke the signal handler now to deal with it.
69 69
70 We used to have two possible definitions of this macro - one for 70 Always test interrupt_input_pending; that's not too expensive, and
71 when SIGIO was #defined, and one for when it wasn't; when SIGIO 71 it'll never get set if we don't need to resignal. This is simpler
72 wasn't #defined, we wouldn't bother to check if we should re-invoke 72 than dealing here with every configuration option that might affect
73 the signal handler. But that doesn't work very well; some of the 73 whether interrupt_input_pending can be nonzero. */
74 files which use this macro don't #include the right files to get
75 SIGIO.
76
77 So, we always test interrupt_input_pending now; that's not too
78 expensive, and it'll never get set if we don't need to resignal. */
79 74
80#define UNBLOCK_INPUT \ 75#define UNBLOCK_INPUT \
81 do \ 76 do \