Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion src/unix/linux_like/android/b32/arm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ s! {

pub struct __c_anonymous_uc_sigmask_with_padding {
pub uc_sigmask: crate::sigset_t,
/* Android has a wrong (smaller) sigset_t on x86. */
/* Android has a wrong (smaller) sigset_t on ARM. */
__padding_rt_sigset: Padding<u32>,
}

Expand Down
26 changes: 25 additions & 1 deletion src/unix/linux_like/android/b64/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ s! {
pub uc_flags: c_ulong,
pub uc_link: *mut ucontext_t,
pub uc_stack: crate::stack_t,
pub uc_sigmask: crate::sigset_t,
pub uc_sigmask__c_anonymous_union: __c_anonymous_uc_sigmask,
/* The kernel adds extra padding after uc_sigmask to match
* glibc sigset_t on ARM64. */
__padding: Padding<[c_char; 128 - size_of::<crate::sigset_t>()]>,
pub uc_mcontext: mcontext_t,
}

Expand All @@ -85,12 +88,33 @@ s! {
}

s_no_extra_traits! {
pub union __c_anonymous_uc_sigmask {
uc_sigmask: crate::sigset_t,
uc_sigmask64: crate::sigset64_t,
}

#[repr(align(16))]
pub struct max_align_t {
priv_: [f32; 8],
}
}

cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for __c_anonymous_uc_sigmask {
fn eq(&self, other: &__c_anonymous_uc_sigmask) -> bool {
unsafe { self.uc_sigmask == other.uc_sigmask }
}
}
impl Eq for __c_anonymous_uc_sigmask {}
impl hash::Hash for __c_anonymous_uc_sigmask {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
unsafe { self.uc_sigmask.hash(state) }
}
}
}
}

pub const O_DIRECT: c_int = 0x10000;
pub const O_DIRECTORY: c_int = 0x4000;
pub const O_NOFOLLOW: c_int = 0x8000;
Expand Down