aboutsummaryrefslogtreecommitdiffstats
path: root/src/keyboard.c
diff options
context:
space:
mode:
authorPaul Eggert <[email protected]>2012-09-16 14:43:55 -0700
committerPaul Eggert <[email protected]>2012-09-16 14:43:55 -0700
commit0caaedb1c3c9c48980144e41d2a95329d39c399a (patch)
tree3e191e2b290e9adf91594be047c1f268cacde932 /src/keyboard.c
parent634b8cacd6cc0557c1963ad7409db247963046d2 (diff)
Remove configure's --without-sync-input option.
When auditing signal-handling in preparation for cleaning it up, I found that SYNC_INPUT has race conditions and would be a real pain to fix. Since it's an undocumented and deprecated configure-time option, now seems like a good time to remove it. Also see <http://bugs.gnu.org/11080#16>. * configure.ac (SYNC_INPUT, BROKEN_SA_RESTART): Remove. * admin/CPP-DEFINES (BROKEN_SA_RESTART, SA_RESTART): Remove. * etc/TODO (Make SYNC_INPUT the default): Remove, as the code now behaves as if SYNC_INPUT is always true. * src/alloc.c (_bytes_used, __malloc_extra_blocks, _malloc_internal) (_free_internal) [!DOUG_LEA_MALLOC]: Remove decls. (alloc_mutex) [!SYSTEM_MALLOC && !SYNC_INPUT && HAVE_PTHREAD]: (malloc_hysteresis): (check_depth) [XMALLOC_OVERRUN_CHECK]: (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): (__malloc_hook, __realloc_hook, __free_hook, BYTES_USED) (dont_register_blocks, bytes_used_when_reconsidered) (bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc) (emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc): [!SYSTEM_MALLOC && !SYNC_INPUT]: Remove. All uses removed. (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different implementation, one that depends on whether the new macro XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT is defined. * src/atimer.c (run_timers, handle_alarm_signal): * src/keyboard.c (pending_signal, poll_for_input_1, poll_for_input) (handle_async_input, process_pending_signals) (handle_input_available_signal, init_keyboard): * src/nsterm.m (ns_read_socket): * src/process.c (wait_reading_process_output): * src/regex.c (immediate_quit, IMMEDIATE_QUIT_CHECK): * src/sysdep.c (emacs_sigaction_init) [SA_RESTART]: (emacs_write): * src/xterm.c (XTread_socket): Assume SYNC_INPUT. * src/conf_post.h (SA_RESTART) [IRIX6_5]: Do not #undef. * src/eval.c (handling_signal): Remove. All uses removed. * src/lisp.h (ELSE_PENDING_SIGNALS): Remove. All uses replaced with the SYNC_INPUT version. (reset_malloc_hooks, uninterrupt_malloc, handling_signal): Remove decls. * src/sysdep.c, src/syssignal.h (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]: Now static. Fixes: debbugs:12450
Diffstat (limited to 'src/keyboard.c')
-rw-r--r--src/keyboard.c37
1 files changed, 1 insertions, 36 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index d164083fb8..01644b3832 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -84,9 +84,7 @@ int interrupt_input_pending;
pending_atimers separately, to reduce code size. So, any code that
changes interrupt_input_pending or pending_atimers should update
this too. */
-#ifdef SYNC_INPUT
int pending_signals;
-#endif
#define KBD_BUFFER_SIZE 4096
@@ -2010,17 +2008,9 @@ static struct atimer *poll_timer;
void
poll_for_input_1 (void)
{
-/* Tell ns_read_socket() it is being called asynchronously so it can avoid
- doing anything dangerous. */
-#ifdef HAVE_NS
- ++handling_signal;
-#endif
if (interrupt_input_blocked == 0
&& !waiting_for_input)
read_avail_input (0);
-#ifdef HAVE_NS
- --handling_signal;
-#endif
}
/* Timer callback function for poll_timer. TIMER is equal to
@@ -2031,12 +2021,8 @@ poll_for_input (struct atimer *timer)
{
if (poll_suppress_count == 0)
{
-#ifdef SYNC_INPUT
interrupt_input_pending = 1;
pending_signals = 1;
-#else
- poll_for_input_1 ();
-#endif
}
}
@@ -7176,19 +7162,12 @@ tty_read_avail_input (struct terminal *terminal,
return nread;
}
-#if defined SYNC_INPUT || defined USABLE_SIGIO
static void
handle_async_input (void)
{
interrupt_input_pending = 0;
-#ifdef SYNC_INPUT
pending_signals = pending_atimers;
-#endif
-/* Tell ns_read_socket() it is being called asynchronously so it can avoid
- doing anything dangerous. */
-#ifdef HAVE_NS
- ++handling_signal;
-#endif
+
while (1)
{
int nread;
@@ -7199,13 +7178,8 @@ handle_async_input (void)
if (nread <= 0)
break;
}
-#ifdef HAVE_NS
- --handling_signal;
-#endif
}
-#endif /* SYNC_INPUT || USABLE_SIGIO */
-#ifdef SYNC_INPUT
void
process_pending_signals (void)
{
@@ -7213,24 +7187,17 @@ process_pending_signals (void)
handle_async_input ();
do_pending_atimers ();
}
-#endif
#ifdef USABLE_SIGIO
static void
handle_input_available_signal (int sig)
{
-#ifdef SYNC_INPUT
interrupt_input_pending = 1;
pending_signals = 1;
-#endif
if (input_available_clear_time)
*input_available_clear_time = make_emacs_time (0, 0);
-
-#ifndef SYNC_INPUT
- handle_async_input ();
-#endif
}
static void
@@ -11365,9 +11332,7 @@ init_keyboard (void)
input_pending = 0;
interrupt_input_blocked = 0;
interrupt_input_pending = 0;
-#ifdef SYNC_INPUT
pending_signals = 0;
-#endif
/* This means that command_loop_1 won't try to select anything the first
time through. */