From: Skgland Date: Fri, 26 Feb 2021 16:24:31 +0000 (+0100) Subject: move the signal handler to the binary X-Git-Tag: v0.9.0~150^2~7^2~1 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=0a08464d4fab151da73203642c8cd5150d1ad077;p=scryer-prolog.git move the signal handler to the binary --- diff --git a/src/bin/scryer-prolog.rs b/src/bin/scryer-prolog.rs index e3330c0a..4260bdd5 100644 --- a/src/bin/scryer-prolog.rs +++ b/src/bin/scryer-prolog.rs @@ -9,3 +9,12 @@ fn main() { let mut wam = machine::Machine::new(readline::input_stream(), machine::Stream::stdout()); wam.run_top_level(); } + +pub extern "C" fn handle_sigint(signal: libc::c_int) { + use nix::sys::signal; + use std::sync::atomic::Ordering; + let signal = signal::Signal::from_c_int(signal).unwrap(); + if signal == signal::Signal::SIGINT { + scryer_prolog::machine::INTERRUPT.store(true, Ordering::Relaxed); + } +} diff --git a/src/lib.rs b/src/lib.rs index 06fead04..1fd4a4fb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,13 +23,3 @@ mod targets; mod write; use machine::*; - -use nix::sys::signal; -use std::sync::atomic::Ordering; - -pub extern "C" fn handle_sigint(signal: libc::c_int) { - let signal = signal::Signal::from_c_int(signal).unwrap(); - if signal == signal::Signal::SIGINT { - INTERRUPT.store(true, Ordering::Relaxed); - } -} diff --git a/src/machine/mod.rs b/src/machine/mod.rs index 51a88762..3deee1bb 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -60,7 +60,7 @@ pub(crate) struct MachinePolicies { } lazy_static! { - pub(crate) static ref INTERRUPT: AtomicBool = AtomicBool::new(false); + pub static ref INTERRUPT: AtomicBool = AtomicBool::new(false); } impl MachinePolicies {