1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct Config {
13 pub blob_max_bytes: u64,
14 pub blobfs: bool,
15 pub blobfs_initial_inodes: u64,
16 pub blobfs_use_deprecated_padded_format: bool,
17 pub check_filesystems: bool,
18 pub data: bool,
19 pub data_filesystem_format: String,
20 pub data_max_bytes: u64,
21 pub disable_automount: bool,
22 pub disable_block_watcher: bool,
23 pub factory: bool,
24 pub format_data_on_corruption: bool,
25 pub fvm: bool,
26 pub fvm_slice_size: u64,
27 pub fxfs_blob: bool,
28 pub fxfs_crypt_url: String,
29 pub gpt: bool,
30 pub gpt_all: bool,
31 pub inline_crypto: bool,
32 pub merge_super_and_userdata: bool,
33 pub no_zxcrypt: bool,
34 pub provision_fxfs: bool,
35 pub ramdisk_image: bool,
36 pub starnix_volume_name: String,
37 pub use_driver_blob_paging: bool,
38}
39
40impl fidl::Persistable for Config {}
41
42mod internal {
43 use super::*;
44
45 impl fidl::encoding::ValueTypeMarker for Config {
46 type Borrowed<'a> = &'a Self;
47 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
48 value
49 }
50 }
51
52 unsafe impl fidl::encoding::TypeMarker for Config {
53 type Owned = Self;
54
55 #[inline(always)]
56 fn inline_align(_context: fidl::encoding::Context) -> usize {
57 8
58 }
59
60 #[inline(always)]
61 fn inline_size(_context: fidl::encoding::Context) -> usize {
62 128
63 }
64 }
65
66 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
67 #[inline]
68 unsafe fn encode(
69 self,
70 encoder: &mut fidl::encoding::Encoder<'_, D>,
71 offset: usize,
72 _depth: fidl::encoding::Depth,
73 ) -> fidl::Result<()> {
74 encoder.debug_check_bounds::<Config>(offset);
75 fidl::encoding::Encode::<Config, D>::encode(
77 (
78 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.blob_max_bytes),
79 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.blobfs),
80 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.blobfs_initial_inodes),
81 <bool as fidl::encoding::ValueTypeMarker>::borrow(
82 &self.blobfs_use_deprecated_padded_format,
83 ),
84 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.check_filesystems),
85 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
86 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
87 &self.data_filesystem_format,
88 ),
89 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.data_max_bytes),
90 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.disable_automount),
91 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.disable_block_watcher),
92 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.factory),
93 <bool as fidl::encoding::ValueTypeMarker>::borrow(
94 &self.format_data_on_corruption,
95 ),
96 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.fvm),
97 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.fvm_slice_size),
98 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.fxfs_blob),
99 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
100 &self.fxfs_crypt_url,
101 ),
102 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.gpt),
103 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.gpt_all),
104 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.inline_crypto),
105 <bool as fidl::encoding::ValueTypeMarker>::borrow(
106 &self.merge_super_and_userdata,
107 ),
108 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.no_zxcrypt),
109 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.provision_fxfs),
110 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.ramdisk_image),
111 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
112 &self.starnix_volume_name,
113 ),
114 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.use_driver_blob_paging),
115 ),
116 encoder,
117 offset,
118 _depth,
119 )
120 }
121 }
122 unsafe impl<
123 D: fidl::encoding::ResourceDialect,
124 T0: fidl::encoding::Encode<u64, D>,
125 T1: fidl::encoding::Encode<bool, D>,
126 T2: fidl::encoding::Encode<u64, D>,
127 T3: fidl::encoding::Encode<bool, D>,
128 T4: fidl::encoding::Encode<bool, D>,
129 T5: fidl::encoding::Encode<bool, D>,
130 T6: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
131 T7: fidl::encoding::Encode<u64, D>,
132 T8: fidl::encoding::Encode<bool, D>,
133 T9: fidl::encoding::Encode<bool, D>,
134 T10: fidl::encoding::Encode<bool, D>,
135 T11: fidl::encoding::Encode<bool, D>,
136 T12: fidl::encoding::Encode<bool, D>,
137 T13: fidl::encoding::Encode<u64, D>,
138 T14: fidl::encoding::Encode<bool, D>,
139 T15: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
140 T16: fidl::encoding::Encode<bool, D>,
141 T17: fidl::encoding::Encode<bool, D>,
142 T18: fidl::encoding::Encode<bool, D>,
143 T19: fidl::encoding::Encode<bool, D>,
144 T20: fidl::encoding::Encode<bool, D>,
145 T21: fidl::encoding::Encode<bool, D>,
146 T22: fidl::encoding::Encode<bool, D>,
147 T23: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
148 T24: fidl::encoding::Encode<bool, D>,
149 > fidl::encoding::Encode<Config, D>
150 for (
151 T0,
152 T1,
153 T2,
154 T3,
155 T4,
156 T5,
157 T6,
158 T7,
159 T8,
160 T9,
161 T10,
162 T11,
163 T12,
164 T13,
165 T14,
166 T15,
167 T16,
168 T17,
169 T18,
170 T19,
171 T20,
172 T21,
173 T22,
174 T23,
175 T24,
176 )
177 {
178 #[inline]
179 unsafe fn encode(
180 self,
181 encoder: &mut fidl::encoding::Encoder<'_, D>,
182 offset: usize,
183 depth: fidl::encoding::Depth,
184 ) -> fidl::Result<()> {
185 encoder.debug_check_bounds::<Config>(offset);
186 unsafe {
189 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
190 (ptr as *mut u64).write_unaligned(0);
191 }
192 unsafe {
193 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
194 (ptr as *mut u64).write_unaligned(0);
195 }
196 unsafe {
197 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
198 (ptr as *mut u64).write_unaligned(0);
199 }
200 unsafe {
201 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(72);
202 (ptr as *mut u64).write_unaligned(0);
203 }
204 unsafe {
205 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(96);
206 (ptr as *mut u64).write_unaligned(0);
207 }
208 unsafe {
209 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(120);
210 (ptr as *mut u64).write_unaligned(0);
211 }
212 self.0.encode(encoder, offset + 0, depth)?;
214 self.1.encode(encoder, offset + 8, depth)?;
215 self.2.encode(encoder, offset + 16, depth)?;
216 self.3.encode(encoder, offset + 24, depth)?;
217 self.4.encode(encoder, offset + 25, depth)?;
218 self.5.encode(encoder, offset + 26, depth)?;
219 self.6.encode(encoder, offset + 32, depth)?;
220 self.7.encode(encoder, offset + 48, depth)?;
221 self.8.encode(encoder, offset + 56, depth)?;
222 self.9.encode(encoder, offset + 57, depth)?;
223 self.10.encode(encoder, offset + 58, depth)?;
224 self.11.encode(encoder, offset + 59, depth)?;
225 self.12.encode(encoder, offset + 60, depth)?;
226 self.13.encode(encoder, offset + 64, depth)?;
227 self.14.encode(encoder, offset + 72, depth)?;
228 self.15.encode(encoder, offset + 80, depth)?;
229 self.16.encode(encoder, offset + 96, depth)?;
230 self.17.encode(encoder, offset + 97, depth)?;
231 self.18.encode(encoder, offset + 98, depth)?;
232 self.19.encode(encoder, offset + 99, depth)?;
233 self.20.encode(encoder, offset + 100, depth)?;
234 self.21.encode(encoder, offset + 101, depth)?;
235 self.22.encode(encoder, offset + 102, depth)?;
236 self.23.encode(encoder, offset + 104, depth)?;
237 self.24.encode(encoder, offset + 120, depth)?;
238 Ok(())
239 }
240 }
241
242 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
243 #[inline(always)]
244 fn new_empty() -> Self {
245 Self {
246 blob_max_bytes: fidl::new_empty!(u64, D),
247 blobfs: fidl::new_empty!(bool, D),
248 blobfs_initial_inodes: fidl::new_empty!(u64, D),
249 blobfs_use_deprecated_padded_format: fidl::new_empty!(bool, D),
250 check_filesystems: fidl::new_empty!(bool, D),
251 data: fidl::new_empty!(bool, D),
252 data_filesystem_format: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
253 data_max_bytes: fidl::new_empty!(u64, D),
254 disable_automount: fidl::new_empty!(bool, D),
255 disable_block_watcher: fidl::new_empty!(bool, D),
256 factory: fidl::new_empty!(bool, D),
257 format_data_on_corruption: fidl::new_empty!(bool, D),
258 fvm: fidl::new_empty!(bool, D),
259 fvm_slice_size: fidl::new_empty!(u64, D),
260 fxfs_blob: fidl::new_empty!(bool, D),
261 fxfs_crypt_url: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
262 gpt: fidl::new_empty!(bool, D),
263 gpt_all: fidl::new_empty!(bool, D),
264 inline_crypto: fidl::new_empty!(bool, D),
265 merge_super_and_userdata: fidl::new_empty!(bool, D),
266 no_zxcrypt: fidl::new_empty!(bool, D),
267 provision_fxfs: fidl::new_empty!(bool, D),
268 ramdisk_image: fidl::new_empty!(bool, D),
269 starnix_volume_name: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
270 use_driver_blob_paging: fidl::new_empty!(bool, D),
271 }
272 }
273
274 #[inline]
275 unsafe fn decode(
276 &mut self,
277 decoder: &mut fidl::encoding::Decoder<'_, D>,
278 offset: usize,
279 _depth: fidl::encoding::Depth,
280 ) -> fidl::Result<()> {
281 decoder.debug_check_bounds::<Self>(offset);
282 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
284 let padval = unsafe { (ptr as *const u64).read_unaligned() };
285 let mask = 0xffffffffffffff00u64;
286 let maskedval = padval & mask;
287 if maskedval != 0 {
288 return Err(fidl::Error::NonZeroPadding {
289 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
290 });
291 }
292 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
293 let padval = unsafe { (ptr as *const u64).read_unaligned() };
294 let mask = 0xffffffffff000000u64;
295 let maskedval = padval & mask;
296 if maskedval != 0 {
297 return Err(fidl::Error::NonZeroPadding {
298 padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
299 });
300 }
301 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
302 let padval = unsafe { (ptr as *const u64).read_unaligned() };
303 let mask = 0xffffff0000000000u64;
304 let maskedval = padval & mask;
305 if maskedval != 0 {
306 return Err(fidl::Error::NonZeroPadding {
307 padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
308 });
309 }
310 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(72) };
311 let padval = unsafe { (ptr as *const u64).read_unaligned() };
312 let mask = 0xffffffffffffff00u64;
313 let maskedval = padval & mask;
314 if maskedval != 0 {
315 return Err(fidl::Error::NonZeroPadding {
316 padding_start: offset + 72 + ((mask as u64).trailing_zeros() / 8) as usize,
317 });
318 }
319 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(96) };
320 let padval = unsafe { (ptr as *const u64).read_unaligned() };
321 let mask = 0xff00000000000000u64;
322 let maskedval = padval & mask;
323 if maskedval != 0 {
324 return Err(fidl::Error::NonZeroPadding {
325 padding_start: offset + 96 + ((mask as u64).trailing_zeros() / 8) as usize,
326 });
327 }
328 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(120) };
329 let padval = unsafe { (ptr as *const u64).read_unaligned() };
330 let mask = 0xffffffffffffff00u64;
331 let maskedval = padval & mask;
332 if maskedval != 0 {
333 return Err(fidl::Error::NonZeroPadding {
334 padding_start: offset + 120 + ((mask as u64).trailing_zeros() / 8) as usize,
335 });
336 }
337 fidl::decode!(u64, D, &mut self.blob_max_bytes, decoder, offset + 0, _depth)?;
338 fidl::decode!(bool, D, &mut self.blobfs, decoder, offset + 8, _depth)?;
339 fidl::decode!(u64, D, &mut self.blobfs_initial_inodes, decoder, offset + 16, _depth)?;
340 fidl::decode!(
341 bool,
342 D,
343 &mut self.blobfs_use_deprecated_padded_format,
344 decoder,
345 offset + 24,
346 _depth
347 )?;
348 fidl::decode!(bool, D, &mut self.check_filesystems, decoder, offset + 25, _depth)?;
349 fidl::decode!(bool, D, &mut self.data, decoder, offset + 26, _depth)?;
350 fidl::decode!(
351 fidl::encoding::BoundedString<64>,
352 D,
353 &mut self.data_filesystem_format,
354 decoder,
355 offset + 32,
356 _depth
357 )?;
358 fidl::decode!(u64, D, &mut self.data_max_bytes, decoder, offset + 48, _depth)?;
359 fidl::decode!(bool, D, &mut self.disable_automount, decoder, offset + 56, _depth)?;
360 fidl::decode!(bool, D, &mut self.disable_block_watcher, decoder, offset + 57, _depth)?;
361 fidl::decode!(bool, D, &mut self.factory, decoder, offset + 58, _depth)?;
362 fidl::decode!(
363 bool,
364 D,
365 &mut self.format_data_on_corruption,
366 decoder,
367 offset + 59,
368 _depth
369 )?;
370 fidl::decode!(bool, D, &mut self.fvm, decoder, offset + 60, _depth)?;
371 fidl::decode!(u64, D, &mut self.fvm_slice_size, decoder, offset + 64, _depth)?;
372 fidl::decode!(bool, D, &mut self.fxfs_blob, decoder, offset + 72, _depth)?;
373 fidl::decode!(
374 fidl::encoding::BoundedString<64>,
375 D,
376 &mut self.fxfs_crypt_url,
377 decoder,
378 offset + 80,
379 _depth
380 )?;
381 fidl::decode!(bool, D, &mut self.gpt, decoder, offset + 96, _depth)?;
382 fidl::decode!(bool, D, &mut self.gpt_all, decoder, offset + 97, _depth)?;
383 fidl::decode!(bool, D, &mut self.inline_crypto, decoder, offset + 98, _depth)?;
384 fidl::decode!(
385 bool,
386 D,
387 &mut self.merge_super_and_userdata,
388 decoder,
389 offset + 99,
390 _depth
391 )?;
392 fidl::decode!(bool, D, &mut self.no_zxcrypt, decoder, offset + 100, _depth)?;
393 fidl::decode!(bool, D, &mut self.provision_fxfs, decoder, offset + 101, _depth)?;
394 fidl::decode!(bool, D, &mut self.ramdisk_image, decoder, offset + 102, _depth)?;
395 fidl::decode!(
396 fidl::encoding::BoundedString<64>,
397 D,
398 &mut self.starnix_volume_name,
399 decoder,
400 offset + 104,
401 _depth
402 )?;
403 fidl::decode!(
404 bool,
405 D,
406 &mut self.use_driver_blob_paging,
407 decoder,
408 offset + 120,
409 _depth
410 )?;
411 Ok(())
412 }
413 }
414}