Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1b17926
Initial signal support
palaviv Jul 28, 2019
5b670f8
Simplify signal code
palaviv Jul 29, 2019
f540d31
Move static triggers array to signal.rs
palaviv Jul 29, 2019
ca23c43
Return previous handler from signal
palaviv Jul 29, 2019
57cdae1
Add signal.getsignal
palaviv Jul 29, 2019
a7d96b7
Use rust signal module directly
palaviv Jul 29, 2019
e8001d7
Add signal.alarm
palaviv Jul 29, 2019
c1e0799
Add test for signal
palaviv Jul 29, 2019
7061f1c
Add signal.{SIG_IGN, SIG_DFL}
palaviv Jul 31, 2019
a1af6b4
Iterate over triggers in check_sginals
palaviv Jul 31, 2019
56b555b
Add signal numbers
palaviv Jul 31, 2019
785b5d8
Improve signal test
palaviv Jul 31, 2019
61bf076
User arr_macro to create triggers array
palaviv Jul 31, 2019
9470d75
Compile nix parts only on unix
palaviv Jul 31, 2019
48da527
Test signal only on unix
palaviv Jul 31, 2019
f3b4b28
SIGINT not defined on windows
palaviv Aug 2, 2019
7cd5e89
Get SIG_IGN
palaviv Aug 2, 2019
52d204c
Fix clippy warnings
palaviv Aug 2, 2019
60b5d9d
Add empty check_signals on WASM
palaviv Aug 2, 2019
25b9f35
Fix more clippy warnings
palaviv Aug 2, 2019
3e07d61
Add vm to WASM check_sginals
palaviv Aug 2, 2019
075f2c9
Use libc directly to set signal
palaviv Aug 3, 2019
23cba40
Get signal numbers from libc
palaviv Aug 3, 2019
f24c6da
Add some windows test to signal
palaviv Aug 3, 2019
f600868
Define SIG_* on windows
palaviv Aug 3, 2019
c5486a6
Remove stub check_signals in WASM
palaviv Aug 3, 2019
5e5d46d
Remove os_set_signal
palaviv Aug 3, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Define SIG_* on windows
  • Loading branch information
palaviv committed Aug 3, 2019
commit f600868a01f1a69b69ca601fc7b48cff3c50df39
16 changes: 13 additions & 3 deletions vm/src/stdlib/signal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@ use nix::unistd::alarm as sig_alarm;

use libc;

#[cfg(not(windows))]
use libc::{SIG_DFL, SIG_ERR, SIG_IGN};

#[cfg(windows)]
const SIG_DFL: libc::sighandler_t = 0;
#[cfg(windows)]
const SIG_IGN: libc::sighandler_t = 1;
#[cfg(windows)]
const SIG_ERR: libc::sighandler_t = !0;

const NSIG: usize = 64;

// We cannot use the NSIG const in the arr macro. This will fail compilation if NSIG is different.
Expand All @@ -33,12 +43,12 @@ enum SigMode {

fn os_set_signal(signalnum: i32, mode: SigMode, vm: &VirtualMachine) -> PyResult<()> {
let sig_handler = match mode {
SigMode::Dfl => libc::SIG_DFL,
SigMode::Ign => libc::SIG_IGN,
SigMode::Dfl => SIG_DFL,
SigMode::Ign => SIG_IGN,
SigMode::Handler => run_signal as libc::sighandler_t,
};
let old = unsafe { libc::signal(signalnum, sig_handler) };
if old == libc::SIG_ERR {
if old == SIG_ERR {
Err(vm.new_os_error("Failed to set signal".to_string()))
} else {
Ok(())
Expand Down