summaryrefslogtreecommitdiffstats
path: root/byterun/signals.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-04-01 15:24:38 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-04-01 15:24:38 +0000
commit3b99a2c8d5c0aec40323e725b4fe28b4f3953344 (patch)
tree008f3c37ed9abb0c257fc794c64f318897647cef /byterun/signals.c
parent3b91622e5db25564b9e8f48ef4a4260fab0b1396 (diff)
Changement du format pour intern/extern.
Pour les threads, adaptation des I/O a la possibilite d'un GC des qu'on fait enter_blocking_section. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@716 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'byterun/signals.c')
-rw-r--r--byterun/signals.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/byterun/signals.c b/byterun/signals.c
index 4b21b60e4..521ff3c0e 100644
--- a/byterun/signals.c
+++ b/byterun/signals.c
@@ -26,6 +26,8 @@ Volatile int pending_signal = 0;
Volatile int something_to_do = 0;
Volatile int force_major_slice = 0;
value signal_handlers = 0;
+void (*enter_blocking_section_hook)() = NULL;
+void (*leave_blocking_section_hook)() = NULL;
static void execute_signal(signal_number)
int signal_number;
@@ -72,11 +74,13 @@ void enter_blocking_section()
if (!pending_signal) break;
async_signal_mode = 0;
}
+ if (enter_blocking_section_hook != NULL) enter_blocking_section_hook();
}
/* This function may be called from outside a blocking section. */
void leave_blocking_section()
{
+ if (leave_blocking_section_hook != NULL) leave_blocking_section_hook();
async_signal_mode = 0;
}