diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2005-04-17 08:23:51 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2005-04-17 08:23:51 +0000 |
commit | bc037fc29f49351520ac932b5f5089efba2b9e9c (patch) | |
tree | 7c39634ed2ab4c0e0090349429b1782190509f06 | |
parent | 1a1693484192cfad2ed2622ab1166da953bf2225 (diff) |
Normalisation des numeros de signaux renvoyes par Unix.wait* (PR#3584)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@6845 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | asmrun/signals.c | 9 | ||||
-rw-r--r-- | byterun/signals.c | 9 | ||||
-rw-r--r-- | byterun/signals.h | 1 | ||||
-rw-r--r-- | otherlibs/unix/wait.c | 4 |
4 files changed, 13 insertions, 10 deletions
diff --git a/asmrun/signals.c b/asmrun/signals.c index 6f3c607ae..3f7c4f1d1 100644 --- a/asmrun/signals.c +++ b/asmrun/signals.c @@ -53,7 +53,7 @@ value caml_signal_handlers = 0; void (*caml_enter_blocking_section_hook)() = NULL; void (*caml_leave_blocking_section_hook)() = NULL; -static int rev_convert_signal_number(int signo); +int caml_rev_convert_signal_number(int signo); /* Execute a signal handler immediately. */ @@ -66,8 +66,9 @@ void caml_execute_signal(int signal_number, int in_signal_handler) sigemptyset(&sigs); sigaddset(&sigs, signal_number); sigprocmask(SIG_BLOCK, &sigs, &sigs); - res = caml_callback_exn(Field(caml_signal_handlers, signal_number), - Val_int(rev_convert_signal_number(signal_number))); + res = caml_callback_exn( + Field(caml_signal_handlers, signal_number), + Val_int(caml_rev_convert_signal_number(signal_number))); if (! in_signal_handler) { /* Restore the original signal mask */ sigprocmask(SIG_SETMASK, &sigs, NULL); @@ -247,7 +248,7 @@ int caml_convert_signal_number(int signo) return signo; } -static int rev_convert_signal_number(int signo) +int caml_rev_convert_signal_number(int signo) { int i; for (i = 0; i < sizeof(posix_signals) / sizeof(int); i++) diff --git a/byterun/signals.c b/byterun/signals.c index 0b5e50bfc..b64701ac3 100644 --- a/byterun/signals.c +++ b/byterun/signals.c @@ -59,7 +59,7 @@ void caml_process_event(void) if (async_action != NULL) (*async_action)(); } -static int rev_convert_signal_number(int signo); +CAMLexport int caml_rev_convert_signal_number(int signo); void caml_execute_signal(int signal_number, int in_signal_handler) { @@ -72,8 +72,9 @@ void caml_execute_signal(int signal_number, int in_signal_handler) sigaddset(&sigs, signal_number); sigprocmask(SIG_BLOCK, &sigs, &sigs); #endif - res = caml_callback_exn(Field(caml_signal_handlers, signal_number), - Val_int(rev_convert_signal_number(signal_number))); + res = caml_callback_exn( + Field(caml_signal_handlers, signal_number), + Val_int(caml_rev_convert_signal_number(signal_number))); #ifdef POSIX_SIGNALS if (! in_signal_handler) { /* Restore the original signal mask */ @@ -228,7 +229,7 @@ CAMLexport int caml_convert_signal_number(int signo) return signo; } -static int rev_convert_signal_number(int signo) +CAMLexport int caml_rev_convert_signal_number(int signo) { int i; for (i = 0; i < sizeof(posix_signals) / sizeof(int); i++) diff --git a/byterun/signals.h b/byterun/signals.h index 4330ca860..82ec23430 100644 --- a/byterun/signals.h +++ b/byterun/signals.h @@ -36,6 +36,7 @@ CAMLextern void caml_leave_blocking_section (void); /* <private> */ void caml_urge_major_slice (void); CAMLextern int caml_convert_signal_number (int); +CAMLextern int caml_rev_convert_signal_number (int); void caml_execute_signal(int signal_number, int in_signal_handler); void caml_process_event(void); diff --git a/otherlibs/unix/wait.c b/otherlibs/unix/wait.c index 5d74b8380..486d06af7 100644 --- a/otherlibs/unix/wait.c +++ b/otherlibs/unix/wait.c @@ -47,11 +47,11 @@ static value alloc_process_status(int pid, int status) } else if (WIFSTOPPED(status)) { st = alloc_small(1, TAG_WSTOPPED); - Field(st, 0) = Val_int(WSTOPSIG(status)); + Field(st, 0) = Val_int(caml_rev_convert_signal_number(WSTOPSIG(status))); } else { st = alloc_small(1, TAG_WSIGNALED); - Field(st, 0) = Val_int(WTERMSIG(status)); + Field(st, 0) = Val_int(caml_rev_convert_signal_number(WTERMSIG(status))); } Begin_root (st); res = alloc_small(2, 0); |