summaryrefslogtreecommitdiff
path: root/libguile/stackchk.c
diff options
context:
space:
mode:
authorNeil Jerram <neil@ossau.uklinux.net>2008-10-17 21:43:36 +0100
committerNeil Jerram <neil@ossau.uklinux.net>2008-10-17 22:05:54 +0100
commitd8b6e19181ffaf2df29431166cc4ca64c1390fc8 (patch)
tree8c17122cf89b00bf9c93e47be4d22c22827f5d1d /libguile/stackchk.c
parent88cefbc7de86e0061b0cc4fb5417de78f7afba15 (diff)
Avoid `Stack overflow' errors when running `make check'
For explanation, see comments and text in the new file libguile/measure-hwm.scm. * .gitignore: Add libguile/stack-limit-calibration.scm. * check-guile.in: Load libguile/stack-limit-calibration.scm. * configure.in: Add AC_CONFIG_FILES to generate test-use-srfi from test-use-srfi.in. * libguile/Makefile.am (TESTS, TESTS_ENVIRONMENT, stack-limit-calibration.scm): New targets, so that `make check' calibrates the stack limit before running the Guile test suite. * libguile/measure-hwm.scm: New file, calibrates stack limit for `make check'. * libguile/stackchk.c (scm_sys_get_stack_size): New primitive. * libguile/stackchk.h (scm_sys_get_stack_size): New primitive (declaration). * test-suite/standalone/test-use-srfi: Renamed test-use-srfi.in, so that ./configure can fill in variables in it. * test-suite/standalone/test-use-srfi.in: Load libguile/stack-limit-calibration.scm.
Diffstat (limited to 'libguile/stackchk.c')
-rw-r--r--libguile/stackchk.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libguile/stackchk.c b/libguile/stackchk.c
index 391ce21e9..a53e67629 100644
--- a/libguile/stackchk.c
+++ b/libguile/stackchk.c
@@ -24,6 +24,7 @@
#include "libguile/_scm.h"
#include "libguile/ports.h"
#include "libguile/root.h"
+#include "libguile/threads.h"
#include "libguile/stackchk.h"
@@ -78,6 +79,17 @@ scm_stack_report ()
scm_puts ("\n", port);
}
+
+SCM_DEFINE (scm_sys_get_stack_size, "%get-stack-size", 0, 0, 0,
+ (),
+ "Return the current thread's C stack size (in Scheme objects).")
+#define FUNC_NAME s_scm_sys_get_stack_size
+{
+ return scm_from_long (scm_stack_size (SCM_I_CURRENT_THREAD->base));
+}
+#undef FUNC_NAME
+
+
void
scm_init_stackchk ()
{