summaryrefslogtreecommitdiff
path: root/runtime/ops/signal.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/signal.rs')
-rw-r--r--runtime/ops/signal.rs79
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 {