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