1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-09 07:00:23 +02:00
guile/doc/ref
Neil Jerram 0ebbcf43c4 Remove AC_SYS_RESTARTABLE_SYSCALLS and related code
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:
http://sources.redhat.com/ml/guile/2000-05/msg00177.html; and is an
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.

Thanks to Sylvain Beucler for reporting this and suggesting the fix.

* 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.

* THANKS: Add Sylvain.
2009-06-23 23:04:41 +01:00
..
.gitignore More `.gitignore'. 2008-04-07 23:55:58 +02:00
api-binding.texi * scheme-binding.texi: Renamed to api-binding.texi. 2004-08-02 12:29:00 +00:00
api-compound.texi Make bytevectors accessible using the generalized-vector API. 2009-06-22 01:09:39 +02:00
api-control.texi Changes from arch/CVS synchronization 2007-06-07 08:36:13 +00:00
api-data.texi Make bytevectors accessible using the generalized-vector API. 2009-06-22 01:09:39 +02:00
api-debug.texi Merge commit 'origin/master' into vm 2009-01-12 21:36:39 +01:00
api-evaluation.texi rename translate.scm to compile-ghil.scm, and more work on compiler.texi 2009-01-09 17:49:09 +01:00
api-i18n.texi Changes from arch/CVS synchronization 2007-01-31 20:58:20 +00:00
api-init.texi Fix explicitely' typos, should be explicitly' 2009-05-20 18:51:03 +01:00
api-io.texi Import documentation for the R6RS bytevector and port APIs. 2009-06-18 23:20:56 +02:00
api-memory.texi Fix explicitely' typos, should be explicitly' 2009-05-20 18:51:03 +01:00
api-modules.texi Fix doc typo regarding `use-syntax' and "syntax transformers". 2008-06-28 20:37:21 +02:00
api-options.texi doc: Correct the default value of `%load-path'. 2008-09-12 11:31:48 +02:00
api-overview.texi * scheme-binding.texi: Renamed to api-binding.texi. 2004-08-02 12:29:00 +00:00
api-procedures.texi update docs -- sections on assembly and objcode 2009-05-25 22:45:42 +02:00
api-scheduling.texi Delete trailing whitespace. 2008-05-14 23:52:49 +01:00
api-scm.texi * scheme-binding.texi: Renamed to api-binding.texi. 2004-08-02 12:29:00 +00:00
api-smobs.texi (smob mark function): List admissible functions 2004-10-19 13:55:06 +00:00
api-snarf.texi Typos fixed. Use existing functions in explaining symbol and keyword 2004-08-25 19:02:34 +00:00
api-translation.texi * scheme-binding.texi: Renamed to api-binding.texi. 2004-08-02 12:29:00 +00:00
api-undocumented.texi Fix explicitely' typos, should be explicitly' 2009-05-20 18:51:03 +01:00
api-utility.texi Changes from arch/CVS synchronization 2006-06-16 07:39:59 +00:00
api.txt Changes in doc/ref: 2002-03-01 00:19:20 +00:00
autoconf.texi Fix omissions and typos in previous commit. 2008-05-04 22:42:13 +02:00
ChangeLog-2008 Rename ChangeLog' files to ChangeLog-2008'. 2008-09-12 21:49:58 +02:00
ChangeLog-guile-doc-ref * Organize documentation into per-manual directories (halfway point commit). 2001-08-24 09:40:29 +00:00
compiler.texi link to brainfuck wikipedia page 2009-06-21 15:06:03 +02:00
data-rep.texi fix doc typo 2008-12-26 16:33:33 +01:00
expect.texi expect.texi (Expect): Removed backslash escapes of regexp 2004-12-20 21:38:23 +00:00
extend.texi Added Copyright notice. 2004-01-21 22:40:39 +00:00
fdl.texi merge from 1.8 branch 2006-04-16 23:18:55 +00:00
guile.texi word tweaks 2009-01-11 18:21:27 +01:00
history.texi fold in neil's feedback to history.texi 2009-01-11 18:30:11 +01:00
indices.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
intro.texi Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
libguile-concepts.texi Fix explicitely' typos, should be explicitly' 2009-05-20 18:51:03 +01:00
libguile-extensions.texi pxref libtool manual. 2006-02-03 23:59:59 +00:00
libguile-linking.texi (A Sample Guile Main Program): Cross reference automake manual for acloal. 2005-06-22 23:55:10 +00:00
libguile-program.texi (Dia Primitives): Cross ref for scm_c_define_gsubr. 2005-06-23 00:09:09 +00:00
libguile-smobs.texi merge vm docs into guile reference (as yet unfinished) 2008-11-20 13:44:22 +01:00
libguile-snarf.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
Makefile.am Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
misc-modules.texi merge from 1.8 branch 2006-10-09 22:47:06 +00:00
mod-getopt-long.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
new-docstrings.texi Synchronized docstrings. 2005-03-04 17:56:31 +00:00
posix.texi Remove AC_SYS_RESTARTABLE_SYSCALLS and related code 2009-06-23 23:04:41 +01:00
preface.texi Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
repl-modules.texi merge from 1.8 branch 2006-10-09 22:47:06 +00:00
scheme-debugging.texi * api-debug.texi (Low Level Trap Calls): Removed (material 2008-03-19 22:51:24 +00:00
scheme-ideas.texi Tweak tail calls wording. 2005-06-23 23:47:32 +00:00
scheme-indices.texi Added Copyright notice. 2004-01-21 22:40:39 +00:00
scheme-intro.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
scheme-reading.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
scheme-scripts.texi Describe new 1.4 compatability behavior of 2005-01-14 16:24:09 +00:00
scheme-using.texi Remove everything to do with GDS Breakpoints 2008-12-10 00:19:11 +00:00
script-getopt.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
scsh.texi Big reorganization of the whole manual to give it a simpler structure. 2004-04-21 14:33:05 +00:00
slib.texi Changes from arch/CVS synchronization 2007-10-02 03:16:28 +00:00
srfi-modules.texi Implementation of SRFI-98 (An interface to access environment variables). 2009-05-30 21:19:59 -04:00
tcltk.texi Added Copyright notice. 2004-01-21 22:40:39 +00:00
tools.texi Added Copyright notice. 2004-01-21 22:40:39 +00:00
vm.texi new instructions: make-int64, make-uint64 2009-06-07 00:53:48 +02:00