1 macro_rules! expand_align {
2     () => {
3         s! {
4             #[cfg_attr(any(target_pointer_width = "32",
5                            target_arch = "x86_64",
6                            target_arch = "powerpc64",
7                            target_arch = "mips64",
8                            target_arch = "s390x",
9                            target_arch = "sparc64",
10                            target_arch = "aarch64",
11                            target_arch = "riscv64",
12                            target_arch = "riscv32"),
13                        repr(align(4)))]
14             #[cfg_attr(not(any(target_pointer_width = "32",
15                                target_arch = "x86_64",
16                                target_arch = "powerpc64",
17                                target_arch = "mips64",
18                                target_arch = "s390x",
19                                target_arch = "sparc64",
20                                target_arch = "aarch64",
21                                target_arch = "riscv64",
22                                target_arch = "riscv32")),
23                        repr(align(8)))]
24             pub struct pthread_mutexattr_t {
25                 #[doc(hidden)]
26                 size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
27             }
28 
29             #[cfg_attr(any(target_env = "musl", target_pointer_width = "32"),
30                        repr(align(4)))]
31             #[cfg_attr(all(not(target_env = "musl"),
32                            target_pointer_width = "64"),
33                        repr(align(8)))]
34             pub struct pthread_rwlockattr_t {
35                 #[doc(hidden)]
36                 size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
37             }
38 
39             #[repr(align(4))]
40             pub struct pthread_condattr_t {
41                 #[doc(hidden)]
42                 size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
43             }
44 
45             #[repr(align(8))]
46             pub struct fanotify_event_metadata {
47                 pub event_len: __u32,
48                 pub vers: __u8,
49                 pub reserved: __u8,
50                 pub metadata_len: __u16,
51                 pub mask: __u64,
52                 pub fd: ::c_int,
53                 pub pid: ::c_int,
54             }
55         }
56 
57         s_no_extra_traits! {
58             #[cfg_attr(all(target_env = "musl",
59                            target_pointer_width = "32"),
60                        repr(align(4)))]
61             #[cfg_attr(all(target_env = "musl",
62                            target_pointer_width = "64"),
63                        repr(align(8)))]
64             #[cfg_attr(all(not(target_env = "musl"),
65                            target_arch = "x86"),
66                        repr(align(4)))]
67             #[cfg_attr(all(not(target_env = "musl"),
68                            not(target_arch = "x86")),
69                        repr(align(8)))]
70             pub struct pthread_cond_t {
71                 #[doc(hidden)]
72                 size: [u8; ::__SIZEOF_PTHREAD_COND_T],
73             }
74 
75             #[cfg_attr(all(target_pointer_width = "32",
76                            any(target_arch = "mips",
77                                target_arch = "arm",
78                                target_arch = "hexagon",
79                                target_arch = "powerpc",
80                                target_arch = "sparc",
81                                target_arch = "x86_64",
82                                target_arch = "x86")),
83                        repr(align(4)))]
84             #[cfg_attr(any(target_pointer_width = "64",
85                            not(any(target_arch = "mips",
86                                    target_arch = "arm",
87                                    target_arch = "hexagon",
88                                    target_arch = "powerpc",
89                                    target_arch = "sparc",
90                                    target_arch = "x86_64",
91                                    target_arch = "x86"))),
92                        repr(align(8)))]
93             pub struct pthread_mutex_t {
94                 #[doc(hidden)]
95                 size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
96             }
97 
98             #[cfg_attr(all(target_pointer_width = "32",
99                            any(target_arch = "mips",
100                                target_arch = "arm",
101                                target_arch = "hexagon",
102                                target_arch = "powerpc",
103                                target_arch = "sparc",
104                                target_arch = "x86_64",
105                                target_arch = "x86")),
106                        repr(align(4)))]
107             #[cfg_attr(any(target_pointer_width = "64",
108                            not(any(target_arch = "mips",
109                                    target_arch = "arm",
110                                    target_arch = "hexagon",
111                                    target_arch = "powerpc",
112                                    target_arch = "sparc",
113                                    target_arch = "x86_64",
114                                    target_arch = "x86"))),
115                        repr(align(8)))]
116             pub struct pthread_rwlock_t {
117                 size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
118             }
119 
120             // linux/can.h
121             #[repr(align(8))]
122             #[allow(missing_debug_implementations)]
123             pub struct can_frame {
124                 pub can_id: canid_t,
125                 pub can_dlc: u8,
126                 __pad: u8,
127                 __res0: u8,
128                 __res1: u8,
129                 pub data: [u8; CAN_MAX_DLEN],
130             }
131 
132             #[repr(align(8))]
133             #[allow(missing_debug_implementations)]
134             pub struct canfd_frame {
135                 pub can_id: canid_t,
136                 pub len: u8,
137                 pub flags: u8,
138                 __res0: u8,
139                 __res1: u8,
140                 pub data: [u8; CANFD_MAX_DLEN],
141             }
142         }
143     };
144 }
145