• Neil Jerram's avatar
    Remove AC_SYS_RESTARTABLE_SYSCALLS and related code · 5e9dc714
    Neil Jerram authored
    As the Autoconf documentation says, "These days portable programs
    [...] should not rely on `HAVE_RESTARTABLE_SYSCALLS', since nowadays
    whether a system call is restartable is a dynamic issue, not a
    configuration-time issue."
    
    In other words, if we ever rely on HAVE_RESTARTABLE_SYSCALLS, we are
    at the mercy of any code that Guile happens to be linked with, because
    that code could install a signal handler without the SA_RESTART flag,
    and then a Guile system call could unexpectedly return EINTR.
    
    The readline part of this goes back to this problem report:
    excellent example of the above paragraph.  It was noted during the
    discussion that undefining HAVE_RESTARTABLE_SYSCALLS would fix the
    problem, but that solution wasn't adopted - I guess because Guile was
    still using cooperative threads then (not pthreads) and so there was a
    significant concern (whether founded or not) that not using
    restartable syscalls (where available) could lead to a loss of
    performance.
    
    Now Guile's default mode of operation is with pthreads, where we
    already don't assume that HAVE_RESTARTABLE_SYSCALLS is reliable, so
    there is no possible further performance loss.  And in any case we
    really have no choice, if we want correct operation.
    
    * configure.in (AC_SYS_RESTARTABLE_SYSCALLS): Removed.
    
    * doc/ref/posix.texi (Signals): Remove statement that Guile always
      sets SA_RESTART flag.
    
    * guile-readline/configure.in (GUILE_SIGWINCH_SA_RESTART_CLEARED):
      Remove this setting, together with its test code.
      (HAVE_RL_PRE_INPUT_HOOK): Remove this setting and its code, as no
      longer needed.
    
    * guile-readline/readline.c (sigwinch_enable_restart): Removed.
      (scm_init_readline): Remove setting of rl_pre_input_hook.
    
    * libguile/_scm.h (SCM_SYSCALL): Remove the definition that relies on
      HAVE_RESTARTABLE_SYSCALLS.
    
    * libguile/scmsigs.c (scm_sigaction_for_thread): Don't always set the
      SA_RESTART flag if available.  Update docstring accordingly.
      (scm_init_scmsigs): Remove code that sets SA_RESTART flag for all
      signals.
    5e9dc714
Name
Last commit
Last update
..
ice-9 Loading commit data...
ChangeLog-2008 Loading commit data...
LIBGUILEREADLINE-VERSION Loading commit data...
Makefile.am Loading commit data...
autogen.sh Loading commit data...
configure.in Loading commit data...
readline-activator.scm Loading commit data...
readline.c Loading commit data...
readline.h Loading commit data...