diff --git a/src/header/bits_pthread/mod.rs b/src/header/bits_pthread/mod.rs index 7c852a4a0daebef0274a66c20fa01b1ce13e5640..af4d166b0326e8368ddbbbf765ad064d6f84a647 100644 --- a/src/header/bits_pthread/mod.rs +++ b/src/header/bits_pthread/mod.rs @@ -16,7 +16,7 @@ use core::sync::atomic::{AtomicU32 as AtomicUint, AtomicI32 as AtomicInt}; #[repr(C)] pub union pthread_attr_t { __relibc_internal_size: [c_uchar; 32], - __relibc_internal_align: c_long, + __relibc_internal_align: size_t, } #[repr(C)] pub union pthread_rwlockattr_t { @@ -88,7 +88,7 @@ macro_rules! assert_equal_size( #[cfg(all(target_os = "redox", feature = "check_against_libc_crate"))] const _: () = unsafe { let export = $export { __relibc_internal_align: 0 }; - let _: libc::$export = core::mem::transmute(export.__relibc_internal_size); + let _: libc::$export = core::mem::transmute(export.__relibc_internal_size); let a = [0_u8; core::mem::align_of::<$export>()]; let b: [u8; core::mem::align_of::<libc::$export>()] = core::mem::transmute(a); diff --git a/src/header/pthread/attr.rs b/src/header/pthread/attr.rs index 481a7c1704d02f969fcc5bd4e5693f66651180ac..732704f3321315eaf650a24869a637d5aa2e45a7 100644 --- a/src/header/pthread/attr.rs +++ b/src/header/pthread/attr.rs @@ -22,7 +22,9 @@ impl Default for RlctAttr { param: sched_param { // TODO sched_priority: 0, - } + }, + #[cfg(target_pointer_width = "32")] + _pad: [0; 12], } } } diff --git a/src/header/pthread/mod.rs b/src/header/pthread/mod.rs index afad09fdc871e05dcf2e15eeb0ea16f707ff0df4..08e77dfa4d7dc39849d70bac8706ac0bb665b675 100644 --- a/src/header/pthread/mod.rs +++ b/src/header/pthread/mod.rs @@ -24,6 +24,8 @@ pub(crate) struct RlctAttr { pub stacksize: size_t, pub stack: size_t, pub param: sched_param, + #[cfg(target_pointer_width = "32")] + _pad: [u8; 12], } pub const PTHREAD_BARRIER_SERIAL_THREAD: c_int = -1;