macro_rules! expand_align {
    () => {
        s! {
            #[cfg_attr(any(target_pointer_width = "32",
                           target_arch = "x86_64",
                           target_arch = "powerpc64",
                           target_arch = "mips64",
                           target_arch = "mips64r6",
                           target_arch = "s390x",
                           target_arch = "sparc64",
                           target_arch = "aarch64",
                           target_arch = "riscv64",
                           target_arch = "riscv32",
                           target_arch = "loongarch64"),
                       repr(align(4)))]
            #[cfg_attr(not(any(target_pointer_width = "32",
                               target_arch = "x86_64",
                               target_arch = "powerpc64",
                               target_arch = "mips64",
                               target_arch = "mips64r6",
                               target_arch = "s390x",
                               target_arch = "sparc64",
                               target_arch = "aarch64",
                               target_arch = "riscv64",
                               target_arch = "riscv32",
                               target_arch = "loongarch64")),
                       repr(align(8)))]
            pub struct pthread_mutexattr_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
            }

            #[cfg_attr(any(target_env = "musl", target_env = "ohos", target_pointer_width = "32"),
                       repr(align(4)))]
            #[cfg_attr(all(not(target_env = "musl"),
                           not(target_env = "ohos"),
                           target_pointer_width = "64"),
                       repr(align(8)))]
            pub struct pthread_rwlockattr_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
            }

            #[repr(align(4))]
            pub struct pthread_condattr_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
            }

            #[repr(align(4))]
            pub struct pthread_barrierattr_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_BARRIERATTR_T],
            }

            #[repr(align(8))]
            pub struct fanotify_event_metadata {
                pub event_len: __u32,
                pub vers: __u8,
                pub reserved: __u8,
                pub metadata_len: __u16,
                pub mask: __u64,
                pub fd: ::c_int,
                pub pid: ::c_int,
            }
        }

        s_no_extra_traits! {
            #[cfg_attr(all(any(target_env = "musl", target_env = "ohos"),
                           target_pointer_width = "32"),
                       repr(align(4)))]
            #[cfg_attr(all(any(target_env = "musl", target_env = "ohos"),
                           target_pointer_width = "64"),
                       repr(align(8)))]
            #[cfg_attr(all(not(any(target_env = "musl", target_env = "ohos")),
                           target_arch = "x86"),
                       repr(align(4)))]
            #[cfg_attr(all(not(any(target_env = "musl", target_env = "ohos")),
                           not(target_arch = "x86")),
                       repr(align(8)))]
            pub struct pthread_cond_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_COND_T],
            }

            #[cfg_attr(all(target_pointer_width = "32",
                           any(target_arch = "mips",
                               target_arch = "mips32r6",
                               target_arch = "arm",
                               target_arch = "hexagon",
                               target_arch = "m68k",
                               target_arch = "csky",
                               target_arch = "powerpc",
                               target_arch = "sparc",
                               target_arch = "x86_64",
                               target_arch = "x86")),
                       repr(align(4)))]
            #[cfg_attr(any(target_pointer_width = "64",
                           not(any(target_arch = "mips",
                                   target_arch = "mips32r6",
                                   target_arch = "arm",
                                   target_arch = "hexagon",
                                   target_arch = "m68k",
                                   target_arch = "csky",
                                   target_arch = "powerpc",
                                   target_arch = "sparc",
                                   target_arch = "x86_64",
                                   target_arch = "x86"))),
                       repr(align(8)))]
            pub struct pthread_mutex_t {
                #[doc(hidden)]
                size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
            }

            #[cfg_attr(all(target_pointer_width = "32",
                           any(target_arch = "mips",
                               target_arch = "mips32r6",
                               target_arch = "arm",
                               target_arch = "hexagon",
                               target_arch = "m68k",
                               target_arch = "csky",
                               target_arch = "powerpc",
                               target_arch = "sparc",
                               target_arch = "x86_64",
                               target_arch = "x86")),
                       repr(align(4)))]
            #[cfg_attr(any(target_pointer_width = "64",
                           not(any(target_arch = "mips",
                                   target_arch = "mips32r6",
                                   target_arch = "arm",
                                   target_arch = "hexagon",
                                   target_arch = "m68k",
                                   target_arch = "powerpc",
                                   target_arch = "sparc",
                                   target_arch = "x86_64",
                                   target_arch = "x86"))),
                       repr(align(8)))]
            pub struct pthread_rwlock_t {
                size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
            }

            #[cfg_attr(all(target_pointer_width = "32",
                           any(target_arch = "mips",
                               target_arch = "mips32r6",
                               target_arch = "arm",
                               target_arch = "hexagon",
                               target_arch = "m68k",
                               target_arch = "csky",
                               target_arch = "powerpc",
                               target_arch = "sparc",
                               target_arch = "x86_64",
                               target_arch = "x86")),
                       repr(align(4)))]
            #[cfg_attr(any(target_pointer_width = "64",
                           not(any(target_arch = "mips",
                                   target_arch = "mips32r6",
                                   target_arch = "arm",
                                   target_arch = "hexagon",
                                   target_arch = "m68k",
                                   target_arch = "csky",
                                   target_arch = "powerpc",
                                   target_arch = "sparc",
                                   target_arch = "x86_64",
                                   target_arch = "x86"))),
                       repr(align(8)))]
            pub struct pthread_barrier_t {
                size: [u8; ::__SIZEOF_PTHREAD_BARRIER_T],
            }

            // linux/can.h
            #[repr(align(8))]
            #[allow(missing_debug_implementations)]
            pub struct can_frame {
                pub can_id: canid_t,
                pub can_dlc: u8,
                __pad: u8,
                __res0: u8,
                __res1: u8,
                pub data: [u8; CAN_MAX_DLEN],
            }

            #[repr(align(8))]
            #[allow(missing_debug_implementations)]
            pub struct canfd_frame {
                pub can_id: canid_t,
                pub len: u8,
                pub flags: u8,
                __res0: u8,
                __res1: u8,
                pub data: [u8; CANFD_MAX_DLEN],
            }

            #[repr(align(8))]
            #[allow(missing_debug_implementations)]
            pub struct canxl_frame {
                pub prio: canid_t,
                pub flags: u8,
                pub sdt: u8,
                pub len: u16,
                pub af: u32,
                pub data: [u8; CANXL_MAX_DLEN],
            }
        }
    };
}
