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