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