summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/ChangeLog36
-rw-r--r--libguile/deprecated.c1
-rw-r--r--libguile/goops.c1
-rw-r--r--libguile/guardians.c1
-rw-r--r--libguile/keywords.c1
-rw-r--r--libguile/objprop.c1
-rw-r--r--libguile/ports.c1
-rw-r--r--libguile/smob.c1
-rw-r--r--libguile/srcprop.c1
-rw-r--r--libguile/stime.c1
-rw-r--r--libguile/struct.c1
11 files changed, 46 insertions, 0 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index d7b5836a9..f6fa2cdef 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,39 @@
+2005-03-07 Marius Vollmer <mvo@zagadka.de>
+
+ * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
+ SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
+ they also block/unblock execution of asyncs and call
+ scm_async_click which is declared in async.h but threads.h can not
+ include async.h since async.h already includes threads.h.
+ (scm_i_critical_section_level): New, for checking mistakes in the
+ use of the SCM_CRITICAL_SECTION_* macros.
+ (scm_i_critical_section_mutex): Make it a recursive mutex so that
+ critical sections can be nested.
+
+ * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
+ not zero.
+
+ * threads.h, threads.c (scm_frame_lock_mutex): New.
+ (scm_frame_critical_section): Take mutex as argument.
+ (framed_critical_section_mutex): New, used as default for above.
+ (scm_init_threads): Initialize it.
+ (scm_threads_prehistory): Do not initialize thread_admin_mutex and
+ scm_i_critical_section_mutex; both are initialized statically.
+
+ * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
+ libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
+ srcprop.c, stime.c, struct.c, throw.c: Include "libguile/async.h"
+ for SCM_CRITICAL_SECTION_START/END.
+
+ * debug.c (scm_debug_options): Replace
+ SCM_CRITICAL_SECTION_START/END with a frame and
+ scm_frame_critical_section.
+
+ * continuations.c (scm_make_continuation): No longer a critical
+ section.
+ (scm_dynthrow): Abort when scm_i_critical_section_level is
+ not zero.
+
2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
* threads.c (scm_try_mutex): Renamed argument for consistency.
diff --git a/libguile/deprecated.c b/libguile/deprecated.c
index 685fa2cf1..1ada46e78 100644
--- a/libguile/deprecated.c
+++ b/libguile/deprecated.c
@@ -20,6 +20,7 @@
*/
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/deprecated.h"
#include "libguile/discouraged.h"
#include "libguile/deprecation.h"
diff --git a/libguile/goops.c b/libguile/goops.c
index b1aa22176..86d486abc 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -28,6 +28,7 @@
#include "libguile/_scm.h"
#include "libguile/alist.h"
+#include "libguile/async.h"
#include "libguile/chars.h"
#include "libguile/debug.h"
#include "libguile/dynl.h"
diff --git a/libguile/guardians.c b/libguile/guardians.c
index 4d4f5a140..5ea384903 100644
--- a/libguile/guardians.c
+++ b/libguile/guardians.c
@@ -35,6 +35,7 @@
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/ports.h"
#include "libguile/print.h"
#include "libguile/smob.h"
diff --git a/libguile/keywords.c b/libguile/keywords.c
index f6b570348..17da78c82 100644
--- a/libguile/keywords.c
+++ b/libguile/keywords.c
@@ -21,6 +21,7 @@
#include <string.h>
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/ports.h"
#include "libguile/root.h"
#include "libguile/smob.h"
diff --git a/libguile/objprop.c b/libguile/objprop.c
index 55f4b7fb8..7135e2cf1 100644
--- a/libguile/objprop.c
+++ b/libguile/objprop.c
@@ -19,6 +19,7 @@
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/hashtab.h"
#include "libguile/alist.h"
#include "libguile/root.h"
diff --git a/libguile/ports.c b/libguile/ports.c
index 5fe2e0763..94182bfc0 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -27,6 +27,7 @@
#include <errno.h>
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/eval.h"
#include "libguile/objects.h"
#include "libguile/goops.h"
diff --git a/libguile/smob.c b/libguile/smob.c
index 8ad641992..ce0b6488e 100644
--- a/libguile/smob.c
+++ b/libguile/smob.c
@@ -26,6 +26,7 @@
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/objects.h"
#include "libguile/goops.h"
#include "libguile/ports.h"
diff --git a/libguile/srcprop.c b/libguile/srcprop.c
index 1aed54d41..a0847c891 100644
--- a/libguile/srcprop.c
+++ b/libguile/srcprop.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/smob.h"
#include "libguile/alist.h"
#include "libguile/debug.h"
diff --git a/libguile/stime.c b/libguile/stime.c
index b44b2d0cb..fcd02f46f 100644
--- a/libguile/stime.c
+++ b/libguile/stime.c
@@ -44,6 +44,7 @@
#include <errno.h>
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/feature.h"
#include "libguile/strings.h"
#include "libguile/vectors.h"
diff --git a/libguile/struct.c b/libguile/struct.c
index f54a77c38..b7635a319 100644
--- a/libguile/struct.c
+++ b/libguile/struct.c
@@ -21,6 +21,7 @@
#endif
#include "libguile/_scm.h"
+#include "libguile/async.h"
#include "libguile/chars.h"
#include "libguile/eval.h"
#include "libguile/alist.h"