xref: /drstd/dlibc/src/unix/platform/dragonos/align.rs (revision 86982c5e9b2eaa583327251616ee822c36288824)
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 = "mips64r6",
9                            target_arch = "s390x",
10                            target_arch = "sparc64",
11                            target_arch = "aarch64",
12                            target_arch = "riscv64",
13                            target_arch = "riscv32",
14                            target_arch = "loongarch64"),
15                        repr(align(4)))]
16             #[cfg_attr(not(any(target_pointer_width = "32",
17                                target_arch = "x86_64",
18                                target_arch = "powerpc64",
19                                target_arch = "mips64",
20                                target_arch = "mips64r6",
21                                target_arch = "s390x",
22                                target_arch = "sparc64",
23                                target_arch = "aarch64",
24                                target_arch = "riscv64",
25                                target_arch = "riscv32",
26                                target_arch = "loongarch64")),
27                        repr(align(8)))]
28             pub struct pthread_mutexattr_t {
29                 #[doc(hidden)]
30                 size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
31             }
32 
33             #[cfg_attr(any(target_env = "musl", target_env = "ohos", target_pointer_width = "32"),
34                        repr(align(4)))]
35             #[cfg_attr(all(not(target_env = "musl"),
36                            not(target_env = "ohos"),
37                            target_pointer_width = "64"),
38                        repr(align(8)))]
39             pub struct pthread_rwlockattr_t {
40                 #[doc(hidden)]
41                 size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
42             }
43 
44             #[repr(align(4))]
45             pub struct pthread_condattr_t {
46                 #[doc(hidden)]
47                 size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
48             }
49 
50             #[repr(align(4))]
51             pub struct pthread_barrierattr_t {
52                 #[doc(hidden)]
53                 size: [u8; ::__SIZEOF_PTHREAD_BARRIERATTR_T],
54             }
55 
56             #[repr(align(8))]
57             pub struct fanotify_event_metadata {
58                 pub event_len: __u32,
59                 pub vers: __u8,
60                 pub reserved: __u8,
61                 pub metadata_len: __u16,
62                 pub mask: __u64,
63                 pub fd: ::c_int,
64                 pub pid: ::c_int,
65             }
66         }
67 
68         s_no_extra_traits! {
69             #[cfg_attr(all(any(target_env = "musl", target_env = "ohos"),
70                            target_pointer_width = "32"),
71                        repr(align(4)))]
72             #[cfg_attr(all(any(target_env = "musl", target_env = "ohos"),
73                            target_pointer_width = "64"),
74                        repr(align(8)))]
75             #[cfg_attr(all(not(any(target_env = "musl", target_env = "ohos")),
76                            target_arch = "x86"),
77                        repr(align(4)))]
78             #[cfg_attr(all(not(any(target_env = "musl", target_env = "ohos")),
79                            not(target_arch = "x86")),
80                        repr(align(8)))]
81             pub struct pthread_cond_t {
82                 #[doc(hidden)]
83                 size: [u8; ::__SIZEOF_PTHREAD_COND_T],
84             }
85 
86             #[cfg_attr(all(target_pointer_width = "32",
87                            any(target_arch = "mips",
88                                target_arch = "mips32r6",
89                                target_arch = "arm",
90                                target_arch = "hexagon",
91                                target_arch = "m68k",
92                                target_arch = "csky",
93                                target_arch = "powerpc",
94                                target_arch = "sparc",
95                                target_arch = "x86_64",
96                                target_arch = "x86")),
97                        repr(align(4)))]
98             #[cfg_attr(any(target_pointer_width = "64",
99                            not(any(target_arch = "mips",
100                                    target_arch = "mips32r6",
101                                    target_arch = "arm",
102                                    target_arch = "hexagon",
103                                    target_arch = "m68k",
104                                    target_arch = "csky",
105                                    target_arch = "powerpc",
106                                    target_arch = "sparc",
107                                    target_arch = "x86_64",
108                                    target_arch = "x86"))),
109                        repr(align(8)))]
110             pub struct pthread_mutex_t {
111                 #[doc(hidden)]
112                 size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
113             }
114 
115             #[cfg_attr(all(target_pointer_width = "32",
116                            any(target_arch = "mips",
117                                target_arch = "mips32r6",
118                                target_arch = "arm",
119                                target_arch = "hexagon",
120                                target_arch = "m68k",
121                                target_arch = "csky",
122                                target_arch = "powerpc",
123                                target_arch = "sparc",
124                                target_arch = "x86_64",
125                                target_arch = "x86")),
126                        repr(align(4)))]
127             #[cfg_attr(any(target_pointer_width = "64",
128                            not(any(target_arch = "mips",
129                                    target_arch = "mips32r6",
130                                    target_arch = "arm",
131                                    target_arch = "hexagon",
132                                    target_arch = "m68k",
133                                    target_arch = "powerpc",
134                                    target_arch = "sparc",
135                                    target_arch = "x86_64",
136                                    target_arch = "x86"))),
137                        repr(align(8)))]
138             pub struct pthread_rwlock_t {
139                 size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
140             }
141 
142             #[cfg_attr(all(target_pointer_width = "32",
143                            any(target_arch = "mips",
144                                target_arch = "mips32r6",
145                                target_arch = "arm",
146                                target_arch = "hexagon",
147                                target_arch = "m68k",
148                                target_arch = "csky",
149                                target_arch = "powerpc",
150                                target_arch = "sparc",
151                                target_arch = "x86_64",
152                                target_arch = "x86")),
153                        repr(align(4)))]
154             #[cfg_attr(any(target_pointer_width = "64",
155                            not(any(target_arch = "mips",
156                                    target_arch = "mips32r6",
157                                    target_arch = "arm",
158                                    target_arch = "hexagon",
159                                    target_arch = "m68k",
160                                    target_arch = "csky",
161                                    target_arch = "powerpc",
162                                    target_arch = "sparc",
163                                    target_arch = "x86_64",
164                                    target_arch = "x86"))),
165                        repr(align(8)))]
166             pub struct pthread_barrier_t {
167                 size: [u8; ::__SIZEOF_PTHREAD_BARRIER_T],
168             }
169 
170             // linux/can.h
171             #[repr(align(8))]
172             #[allow(missing_debug_implementations)]
173             pub struct can_frame {
174                 pub can_id: canid_t,
175                 pub can_dlc: u8,
176                 __pad: u8,
177                 __res0: u8,
178                 __res1: u8,
179                 pub data: [u8; CAN_MAX_DLEN],
180             }
181 
182             #[repr(align(8))]
183             #[allow(missing_debug_implementations)]
184             pub struct canfd_frame {
185                 pub can_id: canid_t,
186                 pub len: u8,
187                 pub flags: u8,
188                 __res0: u8,
189                 __res1: u8,
190                 pub data: [u8; CANFD_MAX_DLEN],
191             }
192 
193             #[repr(align(8))]
194             #[allow(missing_debug_implementations)]
195             pub struct canxl_frame {
196                 pub prio: canid_t,
197                 pub flags: u8,
198                 pub sdt: u8,
199                 pub len: u16,
200                 pub af: u32,
201                 pub data: [u8; CANXL_MAX_DLEN],
202             }
203         }
204     };
205 }
206