Skip to content

Commit

Permalink
Redox renamed sigaction.sa_handler to .sa_sigaction
Browse files Browse the repository at this point in the history
  • Loading branch information
rtzoeller committed Dec 2, 2022
1 parent 34e1ca2 commit 967143f
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 33 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ targets = [
]

[dependencies]
libc = { version = "0.2.102", features = [ "extra_traits" ] }
libc = { version = "0.2.121", features = [ "extra_traits" ] }
bitflags = "1.1"
cfg-if = "1.0"

Expand Down
34 changes: 2 additions & 32 deletions src/sys/signal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -589,21 +589,12 @@ impl SigAction {
/// is the `SigAction` variant). `mask` specifies other signals to block during execution of
/// the signal-catching function.
pub fn new(handler: SigHandler, flags: SaFlags, mask: SigSet) -> SigAction {
#[cfg(target_os = "redox")]
unsafe fn install_sig(p: *mut libc::sigaction, handler: SigHandler) {
(*p).sa_handler = match handler {
SigHandler::SigDfl => libc::SIG_DFL,
SigHandler::SigIgn => libc::SIG_IGN,
SigHandler::Handler(f) => f as *const extern fn(libc::c_int) as usize,
};
}

#[cfg(not(target_os = "redox"))]
unsafe fn install_sig(p: *mut libc::sigaction, handler: SigHandler) {
(*p).sa_sigaction = match handler {
SigHandler::SigDfl => libc::SIG_DFL,
SigHandler::SigIgn => libc::SIG_IGN,
SigHandler::Handler(f) => f as *const extern fn(libc::c_int) as usize,
#[cfg(not(target_os = "redox"))]
SigHandler::SigAction(f) => f as *const extern fn(libc::c_int, *mut libc::siginfo_t, *mut libc::c_void) as usize,
};
}
Expand Down Expand Up @@ -635,11 +626,11 @@ impl SigAction {
}

/// Returns the action's handler.
#[cfg(not(target_os = "redox"))]
pub fn handler(&self) -> SigHandler {
match self.sigaction.sa_sigaction {
libc::SIG_DFL => SigHandler::SigDfl,
libc::SIG_IGN => SigHandler::SigIgn,
#[cfg(not(target_os = "redox"))]
p if self.flags().contains(SaFlags::SA_SIGINFO) =>
SigHandler::SigAction(
// Safe for one of two reasons:
Expand Down Expand Up @@ -667,27 +658,6 @@ impl SigAction {
as extern fn(libc::c_int)),
}
}

/// Returns the action's handler.
#[cfg(target_os = "redox")]
pub fn handler(&self) -> SigHandler {
match self.sigaction.sa_handler {
libc::SIG_DFL => SigHandler::SigDfl,
libc::SIG_IGN => SigHandler::SigIgn,
p => SigHandler::Handler(
// Safe for one of two reasons:
// * The SigHandler was created by SigHandler::new, in which
// case the pointer is correct, or
// * The SigHandler was created by signal or sigaction, which
// are unsafe functions, so the caller should've somehow
// ensured that it is correctly initialized.
unsafe{
*(&p as *const usize
as *const extern fn(libc::c_int))
}
as extern fn(libc::c_int)),
}
}
}

/// Changes the action taken by a process on receipt of a specific signal.
Expand Down

0 comments on commit 967143f

Please sign in to comment.