Merge branch 'fix-sigaction' into 'master'
change sa_flags in sigaction to int to match spec See merge request redox-os/relibc!1016
This commit is contained in:
@@ -16,7 +16,7 @@ struct sigaction {
|
||||
void (*sa_handler)(int);
|
||||
void (*sa_sigaction)(int, siginfo_t *, void *);
|
||||
};
|
||||
unsigned long sa_flags;
|
||||
int sa_flags;
|
||||
void (*sa_restorer)(void);
|
||||
sigset_t sa_mask;
|
||||
};
|
||||
|
||||
@@ -12,8 +12,7 @@ use crate::{
|
||||
platform::{
|
||||
self, ERRNO, Pal, PalSignal, Sys,
|
||||
types::{
|
||||
c_char, c_int, c_ulong, c_ulonglong, c_void, pid_t, pthread_attr_t, pthread_t, size_t,
|
||||
uid_t,
|
||||
c_char, c_int, c_ulonglong, c_void, pid_t, pthread_attr_t, pthread_t, size_t, uid_t,
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -54,7 +53,7 @@ pub const SIGEV_THREAD: c_int = 2;
|
||||
/// cbindgen:ignore
|
||||
pub struct sigaction {
|
||||
pub sa_handler: Option<extern "C" fn(c_int)>,
|
||||
pub sa_flags: c_ulong,
|
||||
pub sa_flags: c_int,
|
||||
pub sa_restorer: Option<unsafe extern "C" fn()>,
|
||||
pub sa_mask: sigset_t,
|
||||
}
|
||||
@@ -316,9 +315,9 @@ pub extern "C" fn siginterrupt(sig: c_int, flag: c_int) -> c_int {
|
||||
unsafe { sigaction(sig, ptr::null_mut(), psa.as_mut_ptr()) };
|
||||
let mut sa = unsafe { psa.assume_init() };
|
||||
if flag != 0 {
|
||||
sa.sa_flags &= !SA_RESTART as c_ulong;
|
||||
sa.sa_flags &= !SA_RESTART as c_int;
|
||||
} else {
|
||||
sa.sa_flags |= SA_RESTART as c_ulong;
|
||||
sa.sa_flags |= SA_RESTART as c_int;
|
||||
}
|
||||
|
||||
unsafe { sigaction(sig, &mut sa, ptr::null_mut()) }
|
||||
@@ -472,7 +471,7 @@ pub unsafe extern "C" fn sigset(
|
||||
} else {
|
||||
let mut sa = sigaction {
|
||||
sa_handler: func,
|
||||
sa_flags: 0 as c_ulong,
|
||||
sa_flags: c_int::from(0),
|
||||
sa_restorer: None, // set by platform if applicable
|
||||
sa_mask: sigset_t::default(),
|
||||
};
|
||||
|
||||
@@ -73,7 +73,7 @@ impl PalSignal for Sys {
|
||||
}
|
||||
let act = act.map(|act| {
|
||||
let mut act_clone = act.clone();
|
||||
act_clone.sa_flags |= SA_RESTORER as c_ulong;
|
||||
act_clone.sa_flags |= SA_RESTORER as c_int;
|
||||
act_clone.sa_restorer = Some(__restore_rt);
|
||||
act_clone
|
||||
});
|
||||
|
||||
@@ -111,7 +111,7 @@ impl PalSignal for Sys {
|
||||
SigactionKind::Ignore
|
||||
} else {
|
||||
SigactionKind::Handled {
|
||||
handler: if c_act.sa_flags & crate::header::signal::SA_SIGINFO as c_ulong != 0 {
|
||||
handler: if c_act.sa_flags & crate::header::signal::SA_SIGINFO as c_int != 0 {
|
||||
SignalHandler {
|
||||
sigaction: unsafe { core::mem::transmute(c_act.sa_handler) },
|
||||
}
|
||||
@@ -154,7 +154,7 @@ impl PalSignal for Sys {
|
||||
unsafe { handler.handler }
|
||||
},
|
||||
sa_restorer: None,
|
||||
sa_flags: old_action.flags.bits().into(),
|
||||
sa_flags: old_action.flags.bits() as c_int,
|
||||
sa_mask: old_action.mask,
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user