diff options
Diffstat (limited to 'runtime/ops')
-rw-r--r-- | runtime/ops/signal.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/runtime/ops/signal.rs b/runtime/ops/signal.rs index 934192c77..ca1f2211d 100644 --- a/runtime/ops/signal.rs +++ b/runtime/ops/signal.rs @@ -183,6 +183,85 @@ pub fn signal_int_to_str(s: libc::c_int) -> Result<&'static str, AnyError> { } } +#[cfg(target_os = "openbsd")] +pub fn signal_str_to_int(s: &str) -> Result<libc::c_int, AnyError> { + match s { + "SIGHUP" => Ok(1), + "SIGINT" => Ok(2), + "SIGQUIT" => Ok(3), + "SIGILL" => Ok(4), + "SIGTRAP" => Ok(5), + "SIGIOT" => Ok(6), + "SIGABRT" => Ok(6), + "SIGEMT" => Ok(7), + "SIGFPE" => Ok(8), + "SIGKILL" => Ok(9), + "SIGBUS" => Ok(10), + "SIGSEGV" => Ok(11), + "SIGSYS" => Ok(12), + "SIGPIPE" => Ok(13), + "SIGALRM" => Ok(14), + "SIGTERM" => Ok(15), + "SIGURG" => Ok(16), + "SIGSTOP" => Ok(17), + "SIGTSTP" => Ok(18), + "SIGCONT" => Ok(19), + "SIGCHLD" => Ok(20), + "SIGTTIN" => Ok(21), + "SIGTTOU" => Ok(22), + "SIGIO" => Ok(23), + "SIGXCPU" => Ok(24), + "SIGXFSZ" => Ok(25), + "SIGVTALRM" => Ok(26), + "SIGPROF" => Ok(27), + "SIGWINCH" => Ok(28), + "SIGINFO" => Ok(29), + "SIGUSR1" => Ok(30), + "SIGUSR2" => Ok(31), + "SIGTHR" => Ok(32), + _ => Err(type_error(format!("Invalid signal : {}", s))), + } +} + +#[cfg(target_os = "openbsd")] +pub fn signal_int_to_str(s: libc::c_int) -> Result<&'static str, AnyError> { + match s { + 1 => Ok("SIGHUP"), + 2 => Ok("SIGINT"), + 3 => Ok("SIGQUIT"), + 4 => Ok("SIGILL"), + 5 => Ok("SIGTRAP"), + 6 => Ok("SIGABRT"), + 7 => Ok("SIGEMT"), + 8 => Ok("SIGFPE"), + 9 => Ok("SIGKILL"), + 10 => Ok("SIGBUS"), + 11 => Ok("SIGSEGV"), + 12 => Ok("SIGSYS"), + 13 => Ok("SIGPIPE"), + 14 => Ok("SIGALRM"), + 15 => Ok("SIGTERM"), + 16 => Ok("SIGURG"), + 17 => Ok("SIGSTOP"), + 18 => Ok("SIGTSTP"), + 19 => Ok("SIGCONT"), + 20 => Ok("SIGCHLD"), + 21 => Ok("SIGTTIN"), + 22 => Ok("SIGTTOU"), + 23 => Ok("SIGIO"), + 24 => Ok("SIGXCPU"), + 25 => Ok("SIGXFSZ"), + 26 => Ok("SIGVTALRM"), + 27 => Ok("SIGPROF"), + 28 => Ok("SIGWINCH"), + 29 => Ok("SIGINFO"), + 30 => Ok("SIGUSR1"), + 31 => Ok("SIGUSR2"), + 32 => Ok("SIGTHR"), + _ => Err(type_error(format!("Invalid signal : {}", s))), + } +} + #[cfg(any(target_os = "android", target_os = "linux"))] pub fn signal_str_to_int(s: &str) -> Result<libc::c_int, AnyError> { match s { |