summaryrefslogtreecommitdiff
path: root/libguile/finalizers.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-04-17 15:29:13 +0200
committerAndy Wingo <wingo@pobox.com>2014-04-17 15:29:13 +0200
commitd6651f690315df2ad14c2c043ffb6c949c28884e (patch)
tree4719dd303351aa47ce517fd3229c920a3a2f2001 /libguile/finalizers.h
parentf5765cc25eb56ab2e11a25066c0d8e2b9d292324 (diff)
downloadguile-d6651f690315df2ad14c2c043ffb6c949c28884e.tar.gz
Add interface to disable automatic finalization
* libguile/finalizers.h: * libguile/finalizers.c (run_finalizers_async_thunk) (finalization_thread_proc): Call the new scm_run_finalizers helper. (scm_i_finalizer_pre_fork): Only spawn the thread if automatic finalization is enabled. (scm_set_automatic_finalization_enabled, scm_run_finalizers): New functions. (scm_init_finalizers, scm_init_finalizer_thread): Only set a finalizer notifier if automatic finalization is enabled. * doc/ref/libguile-smobs.texi (Garbage Collecting Smobs): Add discussion of concurrency. * doc/ref/api-smobs.texi (Smobs): Document new functions.
Diffstat (limited to 'libguile/finalizers.h')
-rw-r--r--libguile/finalizers.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/libguile/finalizers.h b/libguile/finalizers.h
index 2ef075197..d01d1b734 100644
--- a/libguile/finalizers.h
+++ b/libguile/finalizers.h
@@ -1,7 +1,7 @@
#ifndef SCM_FINALIZERS_H
#define SCM_FINALIZERS_H
-/* Copyright (C) 2012, 2013 Free Software Foundation, Inc.
+/* Copyright (C) 2012, 2013, 2014 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -41,6 +41,9 @@ SCM_INTERNAL void scm_i_finalizer_pre_fork (void);
be from an async or from another thread. */
SCM_INTERNAL void scm_i_register_weak_gc_callback (SCM obj, void (*callback) (SCM));
+SCM_API int scm_set_automatic_finalization_enabled (int enabled_p);
+SCM_API int scm_run_finalizers (void);
+
SCM_INTERNAL void scm_init_finalizers (void);
SCM_INTERNAL void scm_init_finalizer_thread (void);