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
11pub const DEBUG_COMMAND_MAX: u32 = 1024;
13
14#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15#[repr(C)]
16pub struct CounterUpdateInspectVmoResponse {
17 pub status: i32,
18}
19
20impl fidl::Persistable for CounterUpdateInspectVmoResponse {}
21
22#[derive(Clone, Debug, PartialEq)]
23pub struct CpuStats {
24 pub actual_num_cpus: u64,
28 pub per_cpu_stats: Option<Vec<PerCpuStats>>,
29}
30
31impl fidl::Persistable for CpuStats {}
32
33#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
34pub struct DebugBrokerSendDebugCommandRequest {
35 pub command: String,
36}
37
38impl fidl::Persistable for DebugBrokerSendDebugCommandRequest {}
39
40#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
41#[repr(C)]
42pub struct DebugBrokerSendDebugCommandResponse {
43 pub status: i32,
44}
45
46impl fidl::Persistable for DebugBrokerSendDebugCommandResponse {}
47
48#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
49pub struct DebugBrokerSetTracingEnabledRequest {
50 pub enabled: bool,
51}
52
53impl fidl::Persistable for DebugBrokerSetTracingEnabledRequest {}
54
55#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
56#[repr(C)]
57pub struct DebugBrokerSetTracingEnabledResponse {
58 pub status: i32,
59}
60
61impl fidl::Persistable for DebugBrokerSetTracingEnabledResponse {}
62
63#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
64#[repr(C)]
65pub struct StatsGetCpuLoadRequest {
66 pub duration: i64,
67}
68
69impl fidl::Persistable for StatsGetCpuLoadRequest {}
70
71#[derive(Clone, Debug, PartialEq, PartialOrd)]
72pub struct StatsGetCpuLoadResponse {
73 pub per_cpu_load: Vec<f32>,
74}
75
76impl fidl::Persistable for StatsGetCpuLoadResponse {}
77
78#[derive(Clone, Debug, PartialEq)]
79pub struct StatsGetCpuStatsResponse {
80 pub stats: CpuStats,
81}
82
83impl fidl::Persistable for StatsGetCpuStatsResponse {}
84
85#[derive(Clone, Debug, PartialEq)]
86pub struct StatsGetMemoryStatsExtendedResponse {
87 pub stats: MemoryStatsExtended,
88}
89
90impl fidl::Persistable for StatsGetMemoryStatsExtendedResponse {}
91
92#[derive(Clone, Debug, PartialEq)]
93pub struct StatsGetMemoryStatsResponse {
94 pub stats: MemoryStats,
95}
96
97impl fidl::Persistable for StatsGetMemoryStatsResponse {}
98
99#[derive(Clone, Debug, Default, PartialEq)]
100pub struct MemoryStats {
101 pub total_bytes: Option<u64>,
102 pub free_bytes: Option<u64>,
103 pub wired_bytes: Option<u64>,
104 pub total_heap_bytes: Option<u64>,
105 pub free_heap_bytes: Option<u64>,
106 pub vmo_bytes: Option<u64>,
107 pub mmu_overhead_bytes: Option<u64>,
108 pub ipc_bytes: Option<u64>,
109 pub other_bytes: Option<u64>,
110 pub free_loaned_bytes: Option<u64>,
111 pub cache_bytes: Option<u64>,
112 pub slab_bytes: Option<u64>,
113 pub zram_bytes: Option<u64>,
114 pub vmo_reclaim_total_bytes: Option<u64>,
115 pub vmo_reclaim_newest_bytes: Option<u64>,
116 pub vmo_reclaim_oldest_bytes: Option<u64>,
117 pub vmo_reclaim_disabled_bytes: Option<u64>,
118 pub vmo_discardable_locked_bytes: Option<u64>,
119 pub vmo_discardable_unlocked_bytes: Option<u64>,
120 #[doc(hidden)]
121 pub __source_breaking: fidl::marker::SourceBreaking,
122}
123
124impl fidl::Persistable for MemoryStats {}
125
126#[derive(Clone, Debug, Default, PartialEq)]
127pub struct MemoryStatsCompression {
128 pub uncompressed_storage_bytes: Option<u64>,
129 pub compressed_storage_bytes: Option<u64>,
130 pub compressed_fragmentation_bytes: Option<u64>,
131 pub compression_time: Option<i64>,
132 pub decompression_time: Option<i64>,
133 pub total_page_compression_attempts: Option<u64>,
134 pub failed_page_compression_attempts: Option<u64>,
135 pub total_page_decompressions: Option<u64>,
136 pub compressed_page_evictions: Option<u64>,
137 pub eager_page_compressions: Option<u64>,
138 pub memory_pressure_page_compressions: Option<u64>,
139 pub critical_memory_page_compressions: Option<u64>,
140 pub pages_decompressed_unit_ns: Option<u64>,
141 pub pages_decompressed_within_log_time: Option<[u64; 8]>,
142 #[doc(hidden)]
143 pub __source_breaking: fidl::marker::SourceBreaking,
144}
145
146impl fidl::Persistable for MemoryStatsCompression {}
147
148#[derive(Clone, Debug, Default, PartialEq)]
149pub struct MemoryStatsExtended {
150 pub total_bytes: Option<u64>,
151 pub free_bytes: Option<u64>,
152 pub wired_bytes: Option<u64>,
153 pub total_heap_bytes: Option<u64>,
154 pub free_heap_bytes: Option<u64>,
155 pub vmo_bytes: Option<u64>,
156 pub vmo_pager_total_bytes: Option<u64>,
157 pub vmo_pager_newest_bytes: Option<u64>,
158 pub vmo_pager_oldest_bytes: Option<u64>,
159 pub vmo_discardable_locked_bytes: Option<u64>,
160 pub vmo_discardable_unlocked_bytes: Option<u64>,
161 pub mmu_overhead_bytes: Option<u64>,
162 pub ipc_bytes: Option<u64>,
163 pub other_bytes: Option<u64>,
164 #[doc(hidden)]
165 pub __source_breaking: fidl::marker::SourceBreaking,
166}
167
168impl fidl::Persistable for MemoryStatsExtended {}
169
170#[derive(Clone, Debug, Default, PartialEq)]
171pub struct PerCpuStats {
172 pub cpu_number: Option<u32>,
173 pub flags: Option<u32>,
174 pub idle_time: Option<i64>,
175 pub reschedules: Option<u64>,
176 pub context_switches: Option<u64>,
177 pub irq_preempts: Option<u64>,
178 pub yields: Option<u64>,
179 pub ints: Option<u64>,
180 pub timer_ints: Option<u64>,
181 pub timers: Option<u64>,
182 pub page_faults: Option<u64>,
183 pub exceptions: Option<u64>,
184 pub syscalls: Option<u64>,
185 pub reschedule_ipis: Option<u64>,
186 pub generic_ipis: Option<u64>,
187 #[doc(hidden)]
188 pub __source_breaking: fidl::marker::SourceBreaking,
189}
190
191impl fidl::Persistable for PerCpuStats {}
192
193pub mod counter_ordinals {
194 pub const GET_INSPECT_VMO: u64 = 0x6ea9b2e6b2791b81;
195 pub const UPDATE_INSPECT_VMO: u64 = 0x1d25eb7995a0539f;
196}
197
198pub mod cpu_resource_ordinals {
199 pub const GET: u64 = 0x41e1103acf4215e4;
200}
201
202pub mod debug_broker_ordinals {
203 pub const SEND_DEBUG_COMMAND: u64 = 0x1ee270f83b5d6ff6;
204 pub const SET_TRACING_ENABLED: u64 = 0x12e368d05329b30e;
205}
206
207pub mod debug_resource_ordinals {
208 pub const GET: u64 = 0x1d79d77ea12a6474;
209}
210
211pub mod debuglog_resource_ordinals {
212 pub const GET: u64 = 0x6e78c1ff74765225;
213}
214
215pub mod energy_info_resource_ordinals {
216 pub const GET: u64 = 0x5f5cc9f0745f61d0;
217}
218
219pub mod hypervisor_resource_ordinals {
220 pub const GET: u64 = 0x1c312131d3b824a2;
221}
222
223pub mod info_resource_ordinals {
224 pub const GET: u64 = 0x1de8edcb4abc2067;
225}
226
227pub mod iommu_resource_ordinals {
228 pub const GET: u64 = 0x5af309b619aa7c5b;
229}
230
231pub mod ioport_resource_ordinals {
232 pub const GET: u64 = 0x4db20876b537c52b;
233}
234
235pub mod irq_resource_ordinals {
236 pub const GET: u64 = 0x491be54504b041e9;
237}
238
239pub mod mexec_resource_ordinals {
240 pub const GET: u64 = 0xff93e6722900f54;
241}
242
243pub mod mmio_resource_ordinals {
244 pub const GET: u64 = 0x66747b9c5a6dfe7b;
245}
246
247pub mod msi_resource_ordinals {
248 pub const GET: u64 = 0x360a97e47e8c4f1f;
249}
250
251pub mod power_resource_ordinals {
252 pub const GET: u64 = 0x2b8df8ca24d1e866;
253}
254
255pub mod profile_resource_ordinals {
256 pub const GET: u64 = 0x3003a0c14de1fa86;
257}
258
259pub mod root_job_ordinals {
260 pub const GET: u64 = 0x73acb63f93d53eac;
261}
262
263pub mod root_job_for_inspect_ordinals {
264 pub const GET: u64 = 0x73acb63f93d53eac;
265}
266
267pub mod sampling_resource_ordinals {
268 pub const GET: u64 = 0x51c41ab037e99824;
269}
270
271pub mod smc_resource_ordinals {
272 pub const GET: u64 = 0x392cbd495b84ede7;
273}
274
275pub mod stall_resource_ordinals {
276 pub const GET: u64 = 0x5edf4c8629a9781a;
277}
278
279pub mod stats_ordinals {
280 pub const GET_MEMORY_STATS: u64 = 0x686677932ae41074;
281 pub const GET_MEMORY_STATS_EXTENDED: u64 = 0x60faa0f8aa38c29f;
282 pub const GET_MEMORY_STATS_COMPRESSION: u64 = 0x544a09995befb531;
283 pub const GET_CPU_STATS: u64 = 0x470e2684ca1ca19e;
284 pub const GET_CPU_LOAD: u64 = 0x4c8f0f05e7034666;
285}
286
287pub mod tracing_resource_ordinals {
288 pub const GET: u64 = 0x299bc179aa54c6aa;
289}
290
291pub mod vmex_resource_ordinals {
292 pub const GET: u64 = 0x33db32deed650699;
293}
294
295mod internal {
296 use super::*;
297
298 impl fidl::encoding::ValueTypeMarker for CounterUpdateInspectVmoResponse {
299 type Borrowed<'a> = &'a Self;
300 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
301 value
302 }
303 }
304
305 unsafe impl fidl::encoding::TypeMarker for CounterUpdateInspectVmoResponse {
306 type Owned = Self;
307
308 #[inline(always)]
309 fn inline_align(_context: fidl::encoding::Context) -> usize {
310 4
311 }
312
313 #[inline(always)]
314 fn inline_size(_context: fidl::encoding::Context) -> usize {
315 4
316 }
317 #[inline(always)]
318 fn encode_is_copy() -> bool {
319 true
320 }
321
322 #[inline(always)]
323 fn decode_is_copy() -> bool {
324 true
325 }
326 }
327
328 unsafe impl<D: fidl::encoding::ResourceDialect>
329 fidl::encoding::Encode<CounterUpdateInspectVmoResponse, D>
330 for &CounterUpdateInspectVmoResponse
331 {
332 #[inline]
333 unsafe fn encode(
334 self,
335 encoder: &mut fidl::encoding::Encoder<'_, D>,
336 offset: usize,
337 _depth: fidl::encoding::Depth,
338 ) -> fidl::Result<()> {
339 encoder.debug_check_bounds::<CounterUpdateInspectVmoResponse>(offset);
340 unsafe {
341 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
343 (buf_ptr as *mut CounterUpdateInspectVmoResponse)
344 .write_unaligned((self as *const CounterUpdateInspectVmoResponse).read());
345 }
348 Ok(())
349 }
350 }
351 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
352 fidl::encoding::Encode<CounterUpdateInspectVmoResponse, D> for (T0,)
353 {
354 #[inline]
355 unsafe fn encode(
356 self,
357 encoder: &mut fidl::encoding::Encoder<'_, D>,
358 offset: usize,
359 depth: fidl::encoding::Depth,
360 ) -> fidl::Result<()> {
361 encoder.debug_check_bounds::<CounterUpdateInspectVmoResponse>(offset);
362 self.0.encode(encoder, offset + 0, depth)?;
366 Ok(())
367 }
368 }
369
370 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
371 for CounterUpdateInspectVmoResponse
372 {
373 #[inline(always)]
374 fn new_empty() -> Self {
375 Self { status: fidl::new_empty!(i32, D) }
376 }
377
378 #[inline]
379 unsafe fn decode(
380 &mut self,
381 decoder: &mut fidl::encoding::Decoder<'_, D>,
382 offset: usize,
383 _depth: fidl::encoding::Depth,
384 ) -> fidl::Result<()> {
385 decoder.debug_check_bounds::<Self>(offset);
386 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
387 unsafe {
390 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
391 }
392 Ok(())
393 }
394 }
395
396 impl fidl::encoding::ValueTypeMarker for CpuStats {
397 type Borrowed<'a> = &'a Self;
398 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
399 value
400 }
401 }
402
403 unsafe impl fidl::encoding::TypeMarker for CpuStats {
404 type Owned = Self;
405
406 #[inline(always)]
407 fn inline_align(_context: fidl::encoding::Context) -> usize {
408 8
409 }
410
411 #[inline(always)]
412 fn inline_size(_context: fidl::encoding::Context) -> usize {
413 24
414 }
415 }
416
417 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CpuStats, D> for &CpuStats {
418 #[inline]
419 unsafe fn encode(
420 self,
421 encoder: &mut fidl::encoding::Encoder<'_, D>,
422 offset: usize,
423 _depth: fidl::encoding::Depth,
424 ) -> fidl::Result<()> {
425 encoder.debug_check_bounds::<CpuStats>(offset);
426 fidl::encoding::Encode::<CpuStats, D>::encode(
428 (
429 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.actual_num_cpus),
430 <fidl::encoding::Optional<fidl::encoding::Vector<PerCpuStats, 512>> as fidl::encoding::ValueTypeMarker>::borrow(&self.per_cpu_stats),
431 ),
432 encoder, offset, _depth
433 )
434 }
435 }
436 unsafe impl<
437 D: fidl::encoding::ResourceDialect,
438 T0: fidl::encoding::Encode<u64, D>,
439 T1: fidl::encoding::Encode<
440 fidl::encoding::Optional<fidl::encoding::Vector<PerCpuStats, 512>>,
441 D,
442 >,
443 > fidl::encoding::Encode<CpuStats, D> for (T0, T1)
444 {
445 #[inline]
446 unsafe fn encode(
447 self,
448 encoder: &mut fidl::encoding::Encoder<'_, D>,
449 offset: usize,
450 depth: fidl::encoding::Depth,
451 ) -> fidl::Result<()> {
452 encoder.debug_check_bounds::<CpuStats>(offset);
453 self.0.encode(encoder, offset + 0, depth)?;
457 self.1.encode(encoder, offset + 8, depth)?;
458 Ok(())
459 }
460 }
461
462 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CpuStats {
463 #[inline(always)]
464 fn new_empty() -> Self {
465 Self {
466 actual_num_cpus: fidl::new_empty!(u64, D),
467 per_cpu_stats: fidl::new_empty!(
468 fidl::encoding::Optional<fidl::encoding::Vector<PerCpuStats, 512>>,
469 D
470 ),
471 }
472 }
473
474 #[inline]
475 unsafe fn decode(
476 &mut self,
477 decoder: &mut fidl::encoding::Decoder<'_, D>,
478 offset: usize,
479 _depth: fidl::encoding::Depth,
480 ) -> fidl::Result<()> {
481 decoder.debug_check_bounds::<Self>(offset);
482 fidl::decode!(u64, D, &mut self.actual_num_cpus, decoder, offset + 0, _depth)?;
484 fidl::decode!(
485 fidl::encoding::Optional<fidl::encoding::Vector<PerCpuStats, 512>>,
486 D,
487 &mut self.per_cpu_stats,
488 decoder,
489 offset + 8,
490 _depth
491 )?;
492 Ok(())
493 }
494 }
495
496 impl fidl::encoding::ValueTypeMarker for DebugBrokerSendDebugCommandRequest {
497 type Borrowed<'a> = &'a Self;
498 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
499 value
500 }
501 }
502
503 unsafe impl fidl::encoding::TypeMarker for DebugBrokerSendDebugCommandRequest {
504 type Owned = Self;
505
506 #[inline(always)]
507 fn inline_align(_context: fidl::encoding::Context) -> usize {
508 8
509 }
510
511 #[inline(always)]
512 fn inline_size(_context: fidl::encoding::Context) -> usize {
513 16
514 }
515 }
516
517 unsafe impl<D: fidl::encoding::ResourceDialect>
518 fidl::encoding::Encode<DebugBrokerSendDebugCommandRequest, D>
519 for &DebugBrokerSendDebugCommandRequest
520 {
521 #[inline]
522 unsafe fn encode(
523 self,
524 encoder: &mut fidl::encoding::Encoder<'_, D>,
525 offset: usize,
526 _depth: fidl::encoding::Depth,
527 ) -> fidl::Result<()> {
528 encoder.debug_check_bounds::<DebugBrokerSendDebugCommandRequest>(offset);
529 fidl::encoding::Encode::<DebugBrokerSendDebugCommandRequest, D>::encode(
531 (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
532 &self.command,
533 ),),
534 encoder,
535 offset,
536 _depth,
537 )
538 }
539 }
540 unsafe impl<
541 D: fidl::encoding::ResourceDialect,
542 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
543 > fidl::encoding::Encode<DebugBrokerSendDebugCommandRequest, D> for (T0,)
544 {
545 #[inline]
546 unsafe fn encode(
547 self,
548 encoder: &mut fidl::encoding::Encoder<'_, D>,
549 offset: usize,
550 depth: fidl::encoding::Depth,
551 ) -> fidl::Result<()> {
552 encoder.debug_check_bounds::<DebugBrokerSendDebugCommandRequest>(offset);
553 self.0.encode(encoder, offset + 0, depth)?;
557 Ok(())
558 }
559 }
560
561 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
562 for DebugBrokerSendDebugCommandRequest
563 {
564 #[inline(always)]
565 fn new_empty() -> Self {
566 Self { command: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
567 }
568
569 #[inline]
570 unsafe fn decode(
571 &mut self,
572 decoder: &mut fidl::encoding::Decoder<'_, D>,
573 offset: usize,
574 _depth: fidl::encoding::Depth,
575 ) -> fidl::Result<()> {
576 decoder.debug_check_bounds::<Self>(offset);
577 fidl::decode!(
579 fidl::encoding::BoundedString<1024>,
580 D,
581 &mut self.command,
582 decoder,
583 offset + 0,
584 _depth
585 )?;
586 Ok(())
587 }
588 }
589
590 impl fidl::encoding::ValueTypeMarker for DebugBrokerSendDebugCommandResponse {
591 type Borrowed<'a> = &'a Self;
592 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
593 value
594 }
595 }
596
597 unsafe impl fidl::encoding::TypeMarker for DebugBrokerSendDebugCommandResponse {
598 type Owned = Self;
599
600 #[inline(always)]
601 fn inline_align(_context: fidl::encoding::Context) -> usize {
602 4
603 }
604
605 #[inline(always)]
606 fn inline_size(_context: fidl::encoding::Context) -> usize {
607 4
608 }
609 #[inline(always)]
610 fn encode_is_copy() -> bool {
611 true
612 }
613
614 #[inline(always)]
615 fn decode_is_copy() -> bool {
616 true
617 }
618 }
619
620 unsafe impl<D: fidl::encoding::ResourceDialect>
621 fidl::encoding::Encode<DebugBrokerSendDebugCommandResponse, D>
622 for &DebugBrokerSendDebugCommandResponse
623 {
624 #[inline]
625 unsafe fn encode(
626 self,
627 encoder: &mut fidl::encoding::Encoder<'_, D>,
628 offset: usize,
629 _depth: fidl::encoding::Depth,
630 ) -> fidl::Result<()> {
631 encoder.debug_check_bounds::<DebugBrokerSendDebugCommandResponse>(offset);
632 unsafe {
633 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
635 (buf_ptr as *mut DebugBrokerSendDebugCommandResponse)
636 .write_unaligned((self as *const DebugBrokerSendDebugCommandResponse).read());
637 }
640 Ok(())
641 }
642 }
643 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
644 fidl::encoding::Encode<DebugBrokerSendDebugCommandResponse, D> for (T0,)
645 {
646 #[inline]
647 unsafe fn encode(
648 self,
649 encoder: &mut fidl::encoding::Encoder<'_, D>,
650 offset: usize,
651 depth: fidl::encoding::Depth,
652 ) -> fidl::Result<()> {
653 encoder.debug_check_bounds::<DebugBrokerSendDebugCommandResponse>(offset);
654 self.0.encode(encoder, offset + 0, depth)?;
658 Ok(())
659 }
660 }
661
662 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
663 for DebugBrokerSendDebugCommandResponse
664 {
665 #[inline(always)]
666 fn new_empty() -> Self {
667 Self { status: fidl::new_empty!(i32, D) }
668 }
669
670 #[inline]
671 unsafe fn decode(
672 &mut self,
673 decoder: &mut fidl::encoding::Decoder<'_, D>,
674 offset: usize,
675 _depth: fidl::encoding::Depth,
676 ) -> fidl::Result<()> {
677 decoder.debug_check_bounds::<Self>(offset);
678 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
679 unsafe {
682 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
683 }
684 Ok(())
685 }
686 }
687
688 impl fidl::encoding::ValueTypeMarker for DebugBrokerSetTracingEnabledRequest {
689 type Borrowed<'a> = &'a Self;
690 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
691 value
692 }
693 }
694
695 unsafe impl fidl::encoding::TypeMarker for DebugBrokerSetTracingEnabledRequest {
696 type Owned = Self;
697
698 #[inline(always)]
699 fn inline_align(_context: fidl::encoding::Context) -> usize {
700 1
701 }
702
703 #[inline(always)]
704 fn inline_size(_context: fidl::encoding::Context) -> usize {
705 1
706 }
707 }
708
709 unsafe impl<D: fidl::encoding::ResourceDialect>
710 fidl::encoding::Encode<DebugBrokerSetTracingEnabledRequest, D>
711 for &DebugBrokerSetTracingEnabledRequest
712 {
713 #[inline]
714 unsafe fn encode(
715 self,
716 encoder: &mut fidl::encoding::Encoder<'_, D>,
717 offset: usize,
718 _depth: fidl::encoding::Depth,
719 ) -> fidl::Result<()> {
720 encoder.debug_check_bounds::<DebugBrokerSetTracingEnabledRequest>(offset);
721 fidl::encoding::Encode::<DebugBrokerSetTracingEnabledRequest, D>::encode(
723 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
724 encoder,
725 offset,
726 _depth,
727 )
728 }
729 }
730 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
731 fidl::encoding::Encode<DebugBrokerSetTracingEnabledRequest, D> for (T0,)
732 {
733 #[inline]
734 unsafe fn encode(
735 self,
736 encoder: &mut fidl::encoding::Encoder<'_, D>,
737 offset: usize,
738 depth: fidl::encoding::Depth,
739 ) -> fidl::Result<()> {
740 encoder.debug_check_bounds::<DebugBrokerSetTracingEnabledRequest>(offset);
741 self.0.encode(encoder, offset + 0, depth)?;
745 Ok(())
746 }
747 }
748
749 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
750 for DebugBrokerSetTracingEnabledRequest
751 {
752 #[inline(always)]
753 fn new_empty() -> Self {
754 Self { enabled: fidl::new_empty!(bool, D) }
755 }
756
757 #[inline]
758 unsafe fn decode(
759 &mut self,
760 decoder: &mut fidl::encoding::Decoder<'_, D>,
761 offset: usize,
762 _depth: fidl::encoding::Depth,
763 ) -> fidl::Result<()> {
764 decoder.debug_check_bounds::<Self>(offset);
765 fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
767 Ok(())
768 }
769 }
770
771 impl fidl::encoding::ValueTypeMarker for DebugBrokerSetTracingEnabledResponse {
772 type Borrowed<'a> = &'a Self;
773 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
774 value
775 }
776 }
777
778 unsafe impl fidl::encoding::TypeMarker for DebugBrokerSetTracingEnabledResponse {
779 type Owned = Self;
780
781 #[inline(always)]
782 fn inline_align(_context: fidl::encoding::Context) -> usize {
783 4
784 }
785
786 #[inline(always)]
787 fn inline_size(_context: fidl::encoding::Context) -> usize {
788 4
789 }
790 #[inline(always)]
791 fn encode_is_copy() -> bool {
792 true
793 }
794
795 #[inline(always)]
796 fn decode_is_copy() -> bool {
797 true
798 }
799 }
800
801 unsafe impl<D: fidl::encoding::ResourceDialect>
802 fidl::encoding::Encode<DebugBrokerSetTracingEnabledResponse, D>
803 for &DebugBrokerSetTracingEnabledResponse
804 {
805 #[inline]
806 unsafe fn encode(
807 self,
808 encoder: &mut fidl::encoding::Encoder<'_, D>,
809 offset: usize,
810 _depth: fidl::encoding::Depth,
811 ) -> fidl::Result<()> {
812 encoder.debug_check_bounds::<DebugBrokerSetTracingEnabledResponse>(offset);
813 unsafe {
814 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
816 (buf_ptr as *mut DebugBrokerSetTracingEnabledResponse)
817 .write_unaligned((self as *const DebugBrokerSetTracingEnabledResponse).read());
818 }
821 Ok(())
822 }
823 }
824 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
825 fidl::encoding::Encode<DebugBrokerSetTracingEnabledResponse, D> for (T0,)
826 {
827 #[inline]
828 unsafe fn encode(
829 self,
830 encoder: &mut fidl::encoding::Encoder<'_, D>,
831 offset: usize,
832 depth: fidl::encoding::Depth,
833 ) -> fidl::Result<()> {
834 encoder.debug_check_bounds::<DebugBrokerSetTracingEnabledResponse>(offset);
835 self.0.encode(encoder, offset + 0, depth)?;
839 Ok(())
840 }
841 }
842
843 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
844 for DebugBrokerSetTracingEnabledResponse
845 {
846 #[inline(always)]
847 fn new_empty() -> Self {
848 Self { status: fidl::new_empty!(i32, D) }
849 }
850
851 #[inline]
852 unsafe fn decode(
853 &mut self,
854 decoder: &mut fidl::encoding::Decoder<'_, D>,
855 offset: usize,
856 _depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 decoder.debug_check_bounds::<Self>(offset);
859 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
860 unsafe {
863 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
864 }
865 Ok(())
866 }
867 }
868
869 impl fidl::encoding::ValueTypeMarker for StatsGetCpuLoadRequest {
870 type Borrowed<'a> = &'a Self;
871 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
872 value
873 }
874 }
875
876 unsafe impl fidl::encoding::TypeMarker for StatsGetCpuLoadRequest {
877 type Owned = Self;
878
879 #[inline(always)]
880 fn inline_align(_context: fidl::encoding::Context) -> usize {
881 8
882 }
883
884 #[inline(always)]
885 fn inline_size(_context: fidl::encoding::Context) -> usize {
886 8
887 }
888 #[inline(always)]
889 fn encode_is_copy() -> bool {
890 true
891 }
892
893 #[inline(always)]
894 fn decode_is_copy() -> bool {
895 true
896 }
897 }
898
899 unsafe impl<D: fidl::encoding::ResourceDialect>
900 fidl::encoding::Encode<StatsGetCpuLoadRequest, D> for &StatsGetCpuLoadRequest
901 {
902 #[inline]
903 unsafe fn encode(
904 self,
905 encoder: &mut fidl::encoding::Encoder<'_, D>,
906 offset: usize,
907 _depth: fidl::encoding::Depth,
908 ) -> fidl::Result<()> {
909 encoder.debug_check_bounds::<StatsGetCpuLoadRequest>(offset);
910 unsafe {
911 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
913 (buf_ptr as *mut StatsGetCpuLoadRequest)
914 .write_unaligned((self as *const StatsGetCpuLoadRequest).read());
915 }
918 Ok(())
919 }
920 }
921 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
922 fidl::encoding::Encode<StatsGetCpuLoadRequest, D> for (T0,)
923 {
924 #[inline]
925 unsafe fn encode(
926 self,
927 encoder: &mut fidl::encoding::Encoder<'_, D>,
928 offset: usize,
929 depth: fidl::encoding::Depth,
930 ) -> fidl::Result<()> {
931 encoder.debug_check_bounds::<StatsGetCpuLoadRequest>(offset);
932 self.0.encode(encoder, offset + 0, depth)?;
936 Ok(())
937 }
938 }
939
940 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
941 for StatsGetCpuLoadRequest
942 {
943 #[inline(always)]
944 fn new_empty() -> Self {
945 Self { duration: fidl::new_empty!(i64, D) }
946 }
947
948 #[inline]
949 unsafe fn decode(
950 &mut self,
951 decoder: &mut fidl::encoding::Decoder<'_, D>,
952 offset: usize,
953 _depth: fidl::encoding::Depth,
954 ) -> fidl::Result<()> {
955 decoder.debug_check_bounds::<Self>(offset);
956 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
957 unsafe {
960 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
961 }
962 Ok(())
963 }
964 }
965
966 impl fidl::encoding::ValueTypeMarker for StatsGetCpuLoadResponse {
967 type Borrowed<'a> = &'a Self;
968 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
969 value
970 }
971 }
972
973 unsafe impl fidl::encoding::TypeMarker for StatsGetCpuLoadResponse {
974 type Owned = Self;
975
976 #[inline(always)]
977 fn inline_align(_context: fidl::encoding::Context) -> usize {
978 8
979 }
980
981 #[inline(always)]
982 fn inline_size(_context: fidl::encoding::Context) -> usize {
983 16
984 }
985 }
986
987 unsafe impl<D: fidl::encoding::ResourceDialect>
988 fidl::encoding::Encode<StatsGetCpuLoadResponse, D> for &StatsGetCpuLoadResponse
989 {
990 #[inline]
991 unsafe fn encode(
992 self,
993 encoder: &mut fidl::encoding::Encoder<'_, D>,
994 offset: usize,
995 _depth: fidl::encoding::Depth,
996 ) -> fidl::Result<()> {
997 encoder.debug_check_bounds::<StatsGetCpuLoadResponse>(offset);
998 fidl::encoding::Encode::<StatsGetCpuLoadResponse, D>::encode(
1000 (<fidl::encoding::Vector<f32, 512> as fidl::encoding::ValueTypeMarker>::borrow(
1001 &self.per_cpu_load,
1002 ),),
1003 encoder,
1004 offset,
1005 _depth,
1006 )
1007 }
1008 }
1009 unsafe impl<
1010 D: fidl::encoding::ResourceDialect,
1011 T0: fidl::encoding::Encode<fidl::encoding::Vector<f32, 512>, D>,
1012 > fidl::encoding::Encode<StatsGetCpuLoadResponse, D> for (T0,)
1013 {
1014 #[inline]
1015 unsafe fn encode(
1016 self,
1017 encoder: &mut fidl::encoding::Encoder<'_, D>,
1018 offset: usize,
1019 depth: fidl::encoding::Depth,
1020 ) -> fidl::Result<()> {
1021 encoder.debug_check_bounds::<StatsGetCpuLoadResponse>(offset);
1022 self.0.encode(encoder, offset + 0, depth)?;
1026 Ok(())
1027 }
1028 }
1029
1030 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1031 for StatsGetCpuLoadResponse
1032 {
1033 #[inline(always)]
1034 fn new_empty() -> Self {
1035 Self { per_cpu_load: fidl::new_empty!(fidl::encoding::Vector<f32, 512>, D) }
1036 }
1037
1038 #[inline]
1039 unsafe fn decode(
1040 &mut self,
1041 decoder: &mut fidl::encoding::Decoder<'_, D>,
1042 offset: usize,
1043 _depth: fidl::encoding::Depth,
1044 ) -> fidl::Result<()> {
1045 decoder.debug_check_bounds::<Self>(offset);
1046 fidl::decode!(fidl::encoding::Vector<f32, 512>, D, &mut self.per_cpu_load, decoder, offset + 0, _depth)?;
1048 Ok(())
1049 }
1050 }
1051
1052 impl fidl::encoding::ValueTypeMarker for StatsGetCpuStatsResponse {
1053 type Borrowed<'a> = &'a Self;
1054 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1055 value
1056 }
1057 }
1058
1059 unsafe impl fidl::encoding::TypeMarker for StatsGetCpuStatsResponse {
1060 type Owned = Self;
1061
1062 #[inline(always)]
1063 fn inline_align(_context: fidl::encoding::Context) -> usize {
1064 8
1065 }
1066
1067 #[inline(always)]
1068 fn inline_size(_context: fidl::encoding::Context) -> usize {
1069 24
1070 }
1071 }
1072
1073 unsafe impl<D: fidl::encoding::ResourceDialect>
1074 fidl::encoding::Encode<StatsGetCpuStatsResponse, D> for &StatsGetCpuStatsResponse
1075 {
1076 #[inline]
1077 unsafe fn encode(
1078 self,
1079 encoder: &mut fidl::encoding::Encoder<'_, D>,
1080 offset: usize,
1081 _depth: fidl::encoding::Depth,
1082 ) -> fidl::Result<()> {
1083 encoder.debug_check_bounds::<StatsGetCpuStatsResponse>(offset);
1084 fidl::encoding::Encode::<StatsGetCpuStatsResponse, D>::encode(
1086 (<CpuStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),),
1087 encoder,
1088 offset,
1089 _depth,
1090 )
1091 }
1092 }
1093 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<CpuStats, D>>
1094 fidl::encoding::Encode<StatsGetCpuStatsResponse, D> for (T0,)
1095 {
1096 #[inline]
1097 unsafe fn encode(
1098 self,
1099 encoder: &mut fidl::encoding::Encoder<'_, D>,
1100 offset: usize,
1101 depth: fidl::encoding::Depth,
1102 ) -> fidl::Result<()> {
1103 encoder.debug_check_bounds::<StatsGetCpuStatsResponse>(offset);
1104 self.0.encode(encoder, offset + 0, depth)?;
1108 Ok(())
1109 }
1110 }
1111
1112 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1113 for StatsGetCpuStatsResponse
1114 {
1115 #[inline(always)]
1116 fn new_empty() -> Self {
1117 Self { stats: fidl::new_empty!(CpuStats, D) }
1118 }
1119
1120 #[inline]
1121 unsafe fn decode(
1122 &mut self,
1123 decoder: &mut fidl::encoding::Decoder<'_, D>,
1124 offset: usize,
1125 _depth: fidl::encoding::Depth,
1126 ) -> fidl::Result<()> {
1127 decoder.debug_check_bounds::<Self>(offset);
1128 fidl::decode!(CpuStats, D, &mut self.stats, decoder, offset + 0, _depth)?;
1130 Ok(())
1131 }
1132 }
1133
1134 impl fidl::encoding::ValueTypeMarker for StatsGetMemoryStatsExtendedResponse {
1135 type Borrowed<'a> = &'a Self;
1136 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1137 value
1138 }
1139 }
1140
1141 unsafe impl fidl::encoding::TypeMarker for StatsGetMemoryStatsExtendedResponse {
1142 type Owned = Self;
1143
1144 #[inline(always)]
1145 fn inline_align(_context: fidl::encoding::Context) -> usize {
1146 8
1147 }
1148
1149 #[inline(always)]
1150 fn inline_size(_context: fidl::encoding::Context) -> usize {
1151 16
1152 }
1153 }
1154
1155 unsafe impl<D: fidl::encoding::ResourceDialect>
1156 fidl::encoding::Encode<StatsGetMemoryStatsExtendedResponse, D>
1157 for &StatsGetMemoryStatsExtendedResponse
1158 {
1159 #[inline]
1160 unsafe fn encode(
1161 self,
1162 encoder: &mut fidl::encoding::Encoder<'_, D>,
1163 offset: usize,
1164 _depth: fidl::encoding::Depth,
1165 ) -> fidl::Result<()> {
1166 encoder.debug_check_bounds::<StatsGetMemoryStatsExtendedResponse>(offset);
1167 fidl::encoding::Encode::<StatsGetMemoryStatsExtendedResponse, D>::encode(
1169 (<MemoryStatsExtended as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),),
1170 encoder,
1171 offset,
1172 _depth,
1173 )
1174 }
1175 }
1176 unsafe impl<
1177 D: fidl::encoding::ResourceDialect,
1178 T0: fidl::encoding::Encode<MemoryStatsExtended, D>,
1179 > fidl::encoding::Encode<StatsGetMemoryStatsExtendedResponse, D> for (T0,)
1180 {
1181 #[inline]
1182 unsafe fn encode(
1183 self,
1184 encoder: &mut fidl::encoding::Encoder<'_, D>,
1185 offset: usize,
1186 depth: fidl::encoding::Depth,
1187 ) -> fidl::Result<()> {
1188 encoder.debug_check_bounds::<StatsGetMemoryStatsExtendedResponse>(offset);
1189 self.0.encode(encoder, offset + 0, depth)?;
1193 Ok(())
1194 }
1195 }
1196
1197 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1198 for StatsGetMemoryStatsExtendedResponse
1199 {
1200 #[inline(always)]
1201 fn new_empty() -> Self {
1202 Self { stats: fidl::new_empty!(MemoryStatsExtended, D) }
1203 }
1204
1205 #[inline]
1206 unsafe fn decode(
1207 &mut self,
1208 decoder: &mut fidl::encoding::Decoder<'_, D>,
1209 offset: usize,
1210 _depth: fidl::encoding::Depth,
1211 ) -> fidl::Result<()> {
1212 decoder.debug_check_bounds::<Self>(offset);
1213 fidl::decode!(MemoryStatsExtended, D, &mut self.stats, decoder, offset + 0, _depth)?;
1215 Ok(())
1216 }
1217 }
1218
1219 impl fidl::encoding::ValueTypeMarker for StatsGetMemoryStatsResponse {
1220 type Borrowed<'a> = &'a Self;
1221 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1222 value
1223 }
1224 }
1225
1226 unsafe impl fidl::encoding::TypeMarker for StatsGetMemoryStatsResponse {
1227 type Owned = Self;
1228
1229 #[inline(always)]
1230 fn inline_align(_context: fidl::encoding::Context) -> usize {
1231 8
1232 }
1233
1234 #[inline(always)]
1235 fn inline_size(_context: fidl::encoding::Context) -> usize {
1236 16
1237 }
1238 }
1239
1240 unsafe impl<D: fidl::encoding::ResourceDialect>
1241 fidl::encoding::Encode<StatsGetMemoryStatsResponse, D> for &StatsGetMemoryStatsResponse
1242 {
1243 #[inline]
1244 unsafe fn encode(
1245 self,
1246 encoder: &mut fidl::encoding::Encoder<'_, D>,
1247 offset: usize,
1248 _depth: fidl::encoding::Depth,
1249 ) -> fidl::Result<()> {
1250 encoder.debug_check_bounds::<StatsGetMemoryStatsResponse>(offset);
1251 fidl::encoding::Encode::<StatsGetMemoryStatsResponse, D>::encode(
1253 (<MemoryStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),),
1254 encoder,
1255 offset,
1256 _depth,
1257 )
1258 }
1259 }
1260 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<MemoryStats, D>>
1261 fidl::encoding::Encode<StatsGetMemoryStatsResponse, D> for (T0,)
1262 {
1263 #[inline]
1264 unsafe fn encode(
1265 self,
1266 encoder: &mut fidl::encoding::Encoder<'_, D>,
1267 offset: usize,
1268 depth: fidl::encoding::Depth,
1269 ) -> fidl::Result<()> {
1270 encoder.debug_check_bounds::<StatsGetMemoryStatsResponse>(offset);
1271 self.0.encode(encoder, offset + 0, depth)?;
1275 Ok(())
1276 }
1277 }
1278
1279 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1280 for StatsGetMemoryStatsResponse
1281 {
1282 #[inline(always)]
1283 fn new_empty() -> Self {
1284 Self { stats: fidl::new_empty!(MemoryStats, D) }
1285 }
1286
1287 #[inline]
1288 unsafe fn decode(
1289 &mut self,
1290 decoder: &mut fidl::encoding::Decoder<'_, D>,
1291 offset: usize,
1292 _depth: fidl::encoding::Depth,
1293 ) -> fidl::Result<()> {
1294 decoder.debug_check_bounds::<Self>(offset);
1295 fidl::decode!(MemoryStats, D, &mut self.stats, decoder, offset + 0, _depth)?;
1297 Ok(())
1298 }
1299 }
1300
1301 impl MemoryStats {
1302 #[inline(always)]
1303 fn max_ordinal_present(&self) -> u64 {
1304 if let Some(_) = self.vmo_discardable_unlocked_bytes {
1305 return 19;
1306 }
1307 if let Some(_) = self.vmo_discardable_locked_bytes {
1308 return 18;
1309 }
1310 if let Some(_) = self.vmo_reclaim_disabled_bytes {
1311 return 17;
1312 }
1313 if let Some(_) = self.vmo_reclaim_oldest_bytes {
1314 return 16;
1315 }
1316 if let Some(_) = self.vmo_reclaim_newest_bytes {
1317 return 15;
1318 }
1319 if let Some(_) = self.vmo_reclaim_total_bytes {
1320 return 14;
1321 }
1322 if let Some(_) = self.zram_bytes {
1323 return 13;
1324 }
1325 if let Some(_) = self.slab_bytes {
1326 return 12;
1327 }
1328 if let Some(_) = self.cache_bytes {
1329 return 11;
1330 }
1331 if let Some(_) = self.free_loaned_bytes {
1332 return 10;
1333 }
1334 if let Some(_) = self.other_bytes {
1335 return 9;
1336 }
1337 if let Some(_) = self.ipc_bytes {
1338 return 8;
1339 }
1340 if let Some(_) = self.mmu_overhead_bytes {
1341 return 7;
1342 }
1343 if let Some(_) = self.vmo_bytes {
1344 return 6;
1345 }
1346 if let Some(_) = self.free_heap_bytes {
1347 return 5;
1348 }
1349 if let Some(_) = self.total_heap_bytes {
1350 return 4;
1351 }
1352 if let Some(_) = self.wired_bytes {
1353 return 3;
1354 }
1355 if let Some(_) = self.free_bytes {
1356 return 2;
1357 }
1358 if let Some(_) = self.total_bytes {
1359 return 1;
1360 }
1361 0
1362 }
1363 }
1364
1365 impl fidl::encoding::ValueTypeMarker for MemoryStats {
1366 type Borrowed<'a> = &'a Self;
1367 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1368 value
1369 }
1370 }
1371
1372 unsafe impl fidl::encoding::TypeMarker for MemoryStats {
1373 type Owned = Self;
1374
1375 #[inline(always)]
1376 fn inline_align(_context: fidl::encoding::Context) -> usize {
1377 8
1378 }
1379
1380 #[inline(always)]
1381 fn inline_size(_context: fidl::encoding::Context) -> usize {
1382 16
1383 }
1384 }
1385
1386 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MemoryStats, D>
1387 for &MemoryStats
1388 {
1389 unsafe fn encode(
1390 self,
1391 encoder: &mut fidl::encoding::Encoder<'_, D>,
1392 offset: usize,
1393 mut depth: fidl::encoding::Depth,
1394 ) -> fidl::Result<()> {
1395 encoder.debug_check_bounds::<MemoryStats>(offset);
1396 let max_ordinal: u64 = self.max_ordinal_present();
1398 encoder.write_num(max_ordinal, offset);
1399 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1400 if max_ordinal == 0 {
1402 return Ok(());
1403 }
1404 depth.increment()?;
1405 let envelope_size = 8;
1406 let bytes_len = max_ordinal as usize * envelope_size;
1407 #[allow(unused_variables)]
1408 let offset = encoder.out_of_line_offset(bytes_len);
1409 let mut _prev_end_offset: usize = 0;
1410 if 1 > max_ordinal {
1411 return Ok(());
1412 }
1413
1414 let cur_offset: usize = (1 - 1) * envelope_size;
1417
1418 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1420
1421 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1426 self.total_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1427 encoder,
1428 offset + cur_offset,
1429 depth,
1430 )?;
1431
1432 _prev_end_offset = cur_offset + envelope_size;
1433 if 2 > max_ordinal {
1434 return Ok(());
1435 }
1436
1437 let cur_offset: usize = (2 - 1) * envelope_size;
1440
1441 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1443
1444 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1449 self.free_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1450 encoder,
1451 offset + cur_offset,
1452 depth,
1453 )?;
1454
1455 _prev_end_offset = cur_offset + envelope_size;
1456 if 3 > max_ordinal {
1457 return Ok(());
1458 }
1459
1460 let cur_offset: usize = (3 - 1) * envelope_size;
1463
1464 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1466
1467 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1472 self.wired_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1473 encoder,
1474 offset + cur_offset,
1475 depth,
1476 )?;
1477
1478 _prev_end_offset = cur_offset + envelope_size;
1479 if 4 > max_ordinal {
1480 return Ok(());
1481 }
1482
1483 let cur_offset: usize = (4 - 1) * envelope_size;
1486
1487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1489
1490 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1495 self.total_heap_bytes
1496 .as_ref()
1497 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1498 encoder,
1499 offset + cur_offset,
1500 depth,
1501 )?;
1502
1503 _prev_end_offset = cur_offset + envelope_size;
1504 if 5 > max_ordinal {
1505 return Ok(());
1506 }
1507
1508 let cur_offset: usize = (5 - 1) * envelope_size;
1511
1512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1514
1515 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1520 self.free_heap_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1521 encoder,
1522 offset + cur_offset,
1523 depth,
1524 )?;
1525
1526 _prev_end_offset = cur_offset + envelope_size;
1527 if 6 > max_ordinal {
1528 return Ok(());
1529 }
1530
1531 let cur_offset: usize = (6 - 1) * envelope_size;
1534
1535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1537
1538 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1543 self.vmo_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1544 encoder,
1545 offset + cur_offset,
1546 depth,
1547 )?;
1548
1549 _prev_end_offset = cur_offset + envelope_size;
1550 if 7 > max_ordinal {
1551 return Ok(());
1552 }
1553
1554 let cur_offset: usize = (7 - 1) * envelope_size;
1557
1558 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1560
1561 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1566 self.mmu_overhead_bytes
1567 .as_ref()
1568 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1569 encoder,
1570 offset + cur_offset,
1571 depth,
1572 )?;
1573
1574 _prev_end_offset = cur_offset + envelope_size;
1575 if 8 > max_ordinal {
1576 return Ok(());
1577 }
1578
1579 let cur_offset: usize = (8 - 1) * envelope_size;
1582
1583 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1585
1586 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1591 self.ipc_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1592 encoder,
1593 offset + cur_offset,
1594 depth,
1595 )?;
1596
1597 _prev_end_offset = cur_offset + envelope_size;
1598 if 9 > max_ordinal {
1599 return Ok(());
1600 }
1601
1602 let cur_offset: usize = (9 - 1) * envelope_size;
1605
1606 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1608
1609 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1614 self.other_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1615 encoder,
1616 offset + cur_offset,
1617 depth,
1618 )?;
1619
1620 _prev_end_offset = cur_offset + envelope_size;
1621 if 10 > max_ordinal {
1622 return Ok(());
1623 }
1624
1625 let cur_offset: usize = (10 - 1) * envelope_size;
1628
1629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1631
1632 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1637 self.free_loaned_bytes
1638 .as_ref()
1639 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1640 encoder,
1641 offset + cur_offset,
1642 depth,
1643 )?;
1644
1645 _prev_end_offset = cur_offset + envelope_size;
1646 if 11 > max_ordinal {
1647 return Ok(());
1648 }
1649
1650 let cur_offset: usize = (11 - 1) * envelope_size;
1653
1654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1656
1657 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1662 self.cache_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1663 encoder,
1664 offset + cur_offset,
1665 depth,
1666 )?;
1667
1668 _prev_end_offset = cur_offset + envelope_size;
1669 if 12 > max_ordinal {
1670 return Ok(());
1671 }
1672
1673 let cur_offset: usize = (12 - 1) * envelope_size;
1676
1677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1679
1680 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1685 self.slab_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1686 encoder,
1687 offset + cur_offset,
1688 depth,
1689 )?;
1690
1691 _prev_end_offset = cur_offset + envelope_size;
1692 if 13 > max_ordinal {
1693 return Ok(());
1694 }
1695
1696 let cur_offset: usize = (13 - 1) * envelope_size;
1699
1700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1702
1703 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1708 self.zram_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1709 encoder,
1710 offset + cur_offset,
1711 depth,
1712 )?;
1713
1714 _prev_end_offset = cur_offset + envelope_size;
1715 if 14 > max_ordinal {
1716 return Ok(());
1717 }
1718
1719 let cur_offset: usize = (14 - 1) * envelope_size;
1722
1723 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1725
1726 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1731 self.vmo_reclaim_total_bytes
1732 .as_ref()
1733 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1734 encoder,
1735 offset + cur_offset,
1736 depth,
1737 )?;
1738
1739 _prev_end_offset = cur_offset + envelope_size;
1740 if 15 > max_ordinal {
1741 return Ok(());
1742 }
1743
1744 let cur_offset: usize = (15 - 1) * envelope_size;
1747
1748 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1750
1751 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1756 self.vmo_reclaim_newest_bytes
1757 .as_ref()
1758 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1759 encoder,
1760 offset + cur_offset,
1761 depth,
1762 )?;
1763
1764 _prev_end_offset = cur_offset + envelope_size;
1765 if 16 > max_ordinal {
1766 return Ok(());
1767 }
1768
1769 let cur_offset: usize = (16 - 1) * envelope_size;
1772
1773 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1775
1776 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1781 self.vmo_reclaim_oldest_bytes
1782 .as_ref()
1783 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1784 encoder,
1785 offset + cur_offset,
1786 depth,
1787 )?;
1788
1789 _prev_end_offset = cur_offset + envelope_size;
1790 if 17 > max_ordinal {
1791 return Ok(());
1792 }
1793
1794 let cur_offset: usize = (17 - 1) * envelope_size;
1797
1798 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1800
1801 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1806 self.vmo_reclaim_disabled_bytes
1807 .as_ref()
1808 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1809 encoder,
1810 offset + cur_offset,
1811 depth,
1812 )?;
1813
1814 _prev_end_offset = cur_offset + envelope_size;
1815 if 18 > max_ordinal {
1816 return Ok(());
1817 }
1818
1819 let cur_offset: usize = (18 - 1) * envelope_size;
1822
1823 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1825
1826 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1831 self.vmo_discardable_locked_bytes
1832 .as_ref()
1833 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1834 encoder,
1835 offset + cur_offset,
1836 depth,
1837 )?;
1838
1839 _prev_end_offset = cur_offset + envelope_size;
1840 if 19 > max_ordinal {
1841 return Ok(());
1842 }
1843
1844 let cur_offset: usize = (19 - 1) * envelope_size;
1847
1848 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1850
1851 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1856 self.vmo_discardable_unlocked_bytes
1857 .as_ref()
1858 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1859 encoder,
1860 offset + cur_offset,
1861 depth,
1862 )?;
1863
1864 _prev_end_offset = cur_offset + envelope_size;
1865
1866 Ok(())
1867 }
1868 }
1869
1870 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MemoryStats {
1871 #[inline(always)]
1872 fn new_empty() -> Self {
1873 Self::default()
1874 }
1875
1876 unsafe fn decode(
1877 &mut self,
1878 decoder: &mut fidl::encoding::Decoder<'_, D>,
1879 offset: usize,
1880 mut depth: fidl::encoding::Depth,
1881 ) -> fidl::Result<()> {
1882 decoder.debug_check_bounds::<Self>(offset);
1883 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1884 None => return Err(fidl::Error::NotNullable),
1885 Some(len) => len,
1886 };
1887 if len == 0 {
1889 return Ok(());
1890 };
1891 depth.increment()?;
1892 let envelope_size = 8;
1893 let bytes_len = len * envelope_size;
1894 let offset = decoder.out_of_line_offset(bytes_len)?;
1895 let mut _next_ordinal_to_read = 0;
1897 let mut next_offset = offset;
1898 let end_offset = offset + bytes_len;
1899 _next_ordinal_to_read += 1;
1900 if next_offset >= end_offset {
1901 return Ok(());
1902 }
1903
1904 while _next_ordinal_to_read < 1 {
1906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1907 _next_ordinal_to_read += 1;
1908 next_offset += envelope_size;
1909 }
1910
1911 let next_out_of_line = decoder.next_out_of_line();
1912 let handles_before = decoder.remaining_handles();
1913 if let Some((inlined, num_bytes, num_handles)) =
1914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1915 {
1916 let member_inline_size =
1917 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1918 if inlined != (member_inline_size <= 4) {
1919 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1920 }
1921 let inner_offset;
1922 let mut inner_depth = depth.clone();
1923 if inlined {
1924 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1925 inner_offset = next_offset;
1926 } else {
1927 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1928 inner_depth.increment()?;
1929 }
1930 let val_ref = self.total_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
1931 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1932 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1933 {
1934 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1935 }
1936 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1937 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1938 }
1939 }
1940
1941 next_offset += envelope_size;
1942 _next_ordinal_to_read += 1;
1943 if next_offset >= end_offset {
1944 return Ok(());
1945 }
1946
1947 while _next_ordinal_to_read < 2 {
1949 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1950 _next_ordinal_to_read += 1;
1951 next_offset += envelope_size;
1952 }
1953
1954 let next_out_of_line = decoder.next_out_of_line();
1955 let handles_before = decoder.remaining_handles();
1956 if let Some((inlined, num_bytes, num_handles)) =
1957 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1958 {
1959 let member_inline_size =
1960 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1961 if inlined != (member_inline_size <= 4) {
1962 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1963 }
1964 let inner_offset;
1965 let mut inner_depth = depth.clone();
1966 if inlined {
1967 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1968 inner_offset = next_offset;
1969 } else {
1970 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1971 inner_depth.increment()?;
1972 }
1973 let val_ref = self.free_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
1974 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1975 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1976 {
1977 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1978 }
1979 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1980 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1981 }
1982 }
1983
1984 next_offset += envelope_size;
1985 _next_ordinal_to_read += 1;
1986 if next_offset >= end_offset {
1987 return Ok(());
1988 }
1989
1990 while _next_ordinal_to_read < 3 {
1992 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1993 _next_ordinal_to_read += 1;
1994 next_offset += envelope_size;
1995 }
1996
1997 let next_out_of_line = decoder.next_out_of_line();
1998 let handles_before = decoder.remaining_handles();
1999 if let Some((inlined, num_bytes, num_handles)) =
2000 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2001 {
2002 let member_inline_size =
2003 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2004 if inlined != (member_inline_size <= 4) {
2005 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2006 }
2007 let inner_offset;
2008 let mut inner_depth = depth.clone();
2009 if inlined {
2010 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2011 inner_offset = next_offset;
2012 } else {
2013 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2014 inner_depth.increment()?;
2015 }
2016 let val_ref = self.wired_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2017 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2018 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2019 {
2020 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2021 }
2022 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2023 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2024 }
2025 }
2026
2027 next_offset += envelope_size;
2028 _next_ordinal_to_read += 1;
2029 if next_offset >= end_offset {
2030 return Ok(());
2031 }
2032
2033 while _next_ordinal_to_read < 4 {
2035 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2036 _next_ordinal_to_read += 1;
2037 next_offset += envelope_size;
2038 }
2039
2040 let next_out_of_line = decoder.next_out_of_line();
2041 let handles_before = decoder.remaining_handles();
2042 if let Some((inlined, num_bytes, num_handles)) =
2043 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2044 {
2045 let member_inline_size =
2046 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2047 if inlined != (member_inline_size <= 4) {
2048 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2049 }
2050 let inner_offset;
2051 let mut inner_depth = depth.clone();
2052 if inlined {
2053 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2054 inner_offset = next_offset;
2055 } else {
2056 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2057 inner_depth.increment()?;
2058 }
2059 let val_ref = self.total_heap_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2060 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2061 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2062 {
2063 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2064 }
2065 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2066 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2067 }
2068 }
2069
2070 next_offset += envelope_size;
2071 _next_ordinal_to_read += 1;
2072 if next_offset >= end_offset {
2073 return Ok(());
2074 }
2075
2076 while _next_ordinal_to_read < 5 {
2078 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2079 _next_ordinal_to_read += 1;
2080 next_offset += envelope_size;
2081 }
2082
2083 let next_out_of_line = decoder.next_out_of_line();
2084 let handles_before = decoder.remaining_handles();
2085 if let Some((inlined, num_bytes, num_handles)) =
2086 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2087 {
2088 let member_inline_size =
2089 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2090 if inlined != (member_inline_size <= 4) {
2091 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2092 }
2093 let inner_offset;
2094 let mut inner_depth = depth.clone();
2095 if inlined {
2096 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2097 inner_offset = next_offset;
2098 } else {
2099 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2100 inner_depth.increment()?;
2101 }
2102 let val_ref = self.free_heap_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2103 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2104 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2105 {
2106 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2107 }
2108 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2109 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2110 }
2111 }
2112
2113 next_offset += envelope_size;
2114 _next_ordinal_to_read += 1;
2115 if next_offset >= end_offset {
2116 return Ok(());
2117 }
2118
2119 while _next_ordinal_to_read < 6 {
2121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2122 _next_ordinal_to_read += 1;
2123 next_offset += envelope_size;
2124 }
2125
2126 let next_out_of_line = decoder.next_out_of_line();
2127 let handles_before = decoder.remaining_handles();
2128 if let Some((inlined, num_bytes, num_handles)) =
2129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2130 {
2131 let member_inline_size =
2132 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2133 if inlined != (member_inline_size <= 4) {
2134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2135 }
2136 let inner_offset;
2137 let mut inner_depth = depth.clone();
2138 if inlined {
2139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2140 inner_offset = next_offset;
2141 } else {
2142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2143 inner_depth.increment()?;
2144 }
2145 let val_ref = self.vmo_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2146 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2147 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2148 {
2149 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2150 }
2151 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2152 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2153 }
2154 }
2155
2156 next_offset += envelope_size;
2157 _next_ordinal_to_read += 1;
2158 if next_offset >= end_offset {
2159 return Ok(());
2160 }
2161
2162 while _next_ordinal_to_read < 7 {
2164 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2165 _next_ordinal_to_read += 1;
2166 next_offset += envelope_size;
2167 }
2168
2169 let next_out_of_line = decoder.next_out_of_line();
2170 let handles_before = decoder.remaining_handles();
2171 if let Some((inlined, num_bytes, num_handles)) =
2172 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2173 {
2174 let member_inline_size =
2175 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2176 if inlined != (member_inline_size <= 4) {
2177 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2178 }
2179 let inner_offset;
2180 let mut inner_depth = depth.clone();
2181 if inlined {
2182 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2183 inner_offset = next_offset;
2184 } else {
2185 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2186 inner_depth.increment()?;
2187 }
2188 let val_ref =
2189 self.mmu_overhead_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2190 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2191 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2192 {
2193 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2194 }
2195 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2196 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2197 }
2198 }
2199
2200 next_offset += envelope_size;
2201 _next_ordinal_to_read += 1;
2202 if next_offset >= end_offset {
2203 return Ok(());
2204 }
2205
2206 while _next_ordinal_to_read < 8 {
2208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2209 _next_ordinal_to_read += 1;
2210 next_offset += envelope_size;
2211 }
2212
2213 let next_out_of_line = decoder.next_out_of_line();
2214 let handles_before = decoder.remaining_handles();
2215 if let Some((inlined, num_bytes, num_handles)) =
2216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2217 {
2218 let member_inline_size =
2219 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2220 if inlined != (member_inline_size <= 4) {
2221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2222 }
2223 let inner_offset;
2224 let mut inner_depth = depth.clone();
2225 if inlined {
2226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2227 inner_offset = next_offset;
2228 } else {
2229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2230 inner_depth.increment()?;
2231 }
2232 let val_ref = self.ipc_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2233 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2234 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2235 {
2236 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2237 }
2238 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2239 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2240 }
2241 }
2242
2243 next_offset += envelope_size;
2244 _next_ordinal_to_read += 1;
2245 if next_offset >= end_offset {
2246 return Ok(());
2247 }
2248
2249 while _next_ordinal_to_read < 9 {
2251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2252 _next_ordinal_to_read += 1;
2253 next_offset += envelope_size;
2254 }
2255
2256 let next_out_of_line = decoder.next_out_of_line();
2257 let handles_before = decoder.remaining_handles();
2258 if let Some((inlined, num_bytes, num_handles)) =
2259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2260 {
2261 let member_inline_size =
2262 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2263 if inlined != (member_inline_size <= 4) {
2264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2265 }
2266 let inner_offset;
2267 let mut inner_depth = depth.clone();
2268 if inlined {
2269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2270 inner_offset = next_offset;
2271 } else {
2272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2273 inner_depth.increment()?;
2274 }
2275 let val_ref = self.other_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2276 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2277 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2278 {
2279 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2280 }
2281 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2282 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2283 }
2284 }
2285
2286 next_offset += envelope_size;
2287 _next_ordinal_to_read += 1;
2288 if next_offset >= end_offset {
2289 return Ok(());
2290 }
2291
2292 while _next_ordinal_to_read < 10 {
2294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2295 _next_ordinal_to_read += 1;
2296 next_offset += envelope_size;
2297 }
2298
2299 let next_out_of_line = decoder.next_out_of_line();
2300 let handles_before = decoder.remaining_handles();
2301 if let Some((inlined, num_bytes, num_handles)) =
2302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2303 {
2304 let member_inline_size =
2305 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2306 if inlined != (member_inline_size <= 4) {
2307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2308 }
2309 let inner_offset;
2310 let mut inner_depth = depth.clone();
2311 if inlined {
2312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2313 inner_offset = next_offset;
2314 } else {
2315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2316 inner_depth.increment()?;
2317 }
2318 let val_ref =
2319 self.free_loaned_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2320 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2321 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2322 {
2323 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2324 }
2325 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2326 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2327 }
2328 }
2329
2330 next_offset += envelope_size;
2331 _next_ordinal_to_read += 1;
2332 if next_offset >= end_offset {
2333 return Ok(());
2334 }
2335
2336 while _next_ordinal_to_read < 11 {
2338 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2339 _next_ordinal_to_read += 1;
2340 next_offset += envelope_size;
2341 }
2342
2343 let next_out_of_line = decoder.next_out_of_line();
2344 let handles_before = decoder.remaining_handles();
2345 if let Some((inlined, num_bytes, num_handles)) =
2346 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2347 {
2348 let member_inline_size =
2349 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2350 if inlined != (member_inline_size <= 4) {
2351 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2352 }
2353 let inner_offset;
2354 let mut inner_depth = depth.clone();
2355 if inlined {
2356 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2357 inner_offset = next_offset;
2358 } else {
2359 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2360 inner_depth.increment()?;
2361 }
2362 let val_ref = self.cache_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2363 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2365 {
2366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2367 }
2368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2370 }
2371 }
2372
2373 next_offset += envelope_size;
2374 _next_ordinal_to_read += 1;
2375 if next_offset >= end_offset {
2376 return Ok(());
2377 }
2378
2379 while _next_ordinal_to_read < 12 {
2381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2382 _next_ordinal_to_read += 1;
2383 next_offset += envelope_size;
2384 }
2385
2386 let next_out_of_line = decoder.next_out_of_line();
2387 let handles_before = decoder.remaining_handles();
2388 if let Some((inlined, num_bytes, num_handles)) =
2389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2390 {
2391 let member_inline_size =
2392 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2393 if inlined != (member_inline_size <= 4) {
2394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2395 }
2396 let inner_offset;
2397 let mut inner_depth = depth.clone();
2398 if inlined {
2399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2400 inner_offset = next_offset;
2401 } else {
2402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2403 inner_depth.increment()?;
2404 }
2405 let val_ref = self.slab_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2406 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2408 {
2409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2410 }
2411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2413 }
2414 }
2415
2416 next_offset += envelope_size;
2417 _next_ordinal_to_read += 1;
2418 if next_offset >= end_offset {
2419 return Ok(());
2420 }
2421
2422 while _next_ordinal_to_read < 13 {
2424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2425 _next_ordinal_to_read += 1;
2426 next_offset += envelope_size;
2427 }
2428
2429 let next_out_of_line = decoder.next_out_of_line();
2430 let handles_before = decoder.remaining_handles();
2431 if let Some((inlined, num_bytes, num_handles)) =
2432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2433 {
2434 let member_inline_size =
2435 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2436 if inlined != (member_inline_size <= 4) {
2437 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2438 }
2439 let inner_offset;
2440 let mut inner_depth = depth.clone();
2441 if inlined {
2442 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2443 inner_offset = next_offset;
2444 } else {
2445 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2446 inner_depth.increment()?;
2447 }
2448 let val_ref = self.zram_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2449 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2451 {
2452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2453 }
2454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2456 }
2457 }
2458
2459 next_offset += envelope_size;
2460 _next_ordinal_to_read += 1;
2461 if next_offset >= end_offset {
2462 return Ok(());
2463 }
2464
2465 while _next_ordinal_to_read < 14 {
2467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2468 _next_ordinal_to_read += 1;
2469 next_offset += envelope_size;
2470 }
2471
2472 let next_out_of_line = decoder.next_out_of_line();
2473 let handles_before = decoder.remaining_handles();
2474 if let Some((inlined, num_bytes, num_handles)) =
2475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2476 {
2477 let member_inline_size =
2478 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2479 if inlined != (member_inline_size <= 4) {
2480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2481 }
2482 let inner_offset;
2483 let mut inner_depth = depth.clone();
2484 if inlined {
2485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2486 inner_offset = next_offset;
2487 } else {
2488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2489 inner_depth.increment()?;
2490 }
2491 let val_ref =
2492 self.vmo_reclaim_total_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2493 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2495 {
2496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2497 }
2498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2500 }
2501 }
2502
2503 next_offset += envelope_size;
2504 _next_ordinal_to_read += 1;
2505 if next_offset >= end_offset {
2506 return Ok(());
2507 }
2508
2509 while _next_ordinal_to_read < 15 {
2511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2512 _next_ordinal_to_read += 1;
2513 next_offset += envelope_size;
2514 }
2515
2516 let next_out_of_line = decoder.next_out_of_line();
2517 let handles_before = decoder.remaining_handles();
2518 if let Some((inlined, num_bytes, num_handles)) =
2519 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2520 {
2521 let member_inline_size =
2522 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2523 if inlined != (member_inline_size <= 4) {
2524 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2525 }
2526 let inner_offset;
2527 let mut inner_depth = depth.clone();
2528 if inlined {
2529 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2530 inner_offset = next_offset;
2531 } else {
2532 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2533 inner_depth.increment()?;
2534 }
2535 let val_ref =
2536 self.vmo_reclaim_newest_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2537 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2539 {
2540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2541 }
2542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2544 }
2545 }
2546
2547 next_offset += envelope_size;
2548 _next_ordinal_to_read += 1;
2549 if next_offset >= end_offset {
2550 return Ok(());
2551 }
2552
2553 while _next_ordinal_to_read < 16 {
2555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2556 _next_ordinal_to_read += 1;
2557 next_offset += envelope_size;
2558 }
2559
2560 let next_out_of_line = decoder.next_out_of_line();
2561 let handles_before = decoder.remaining_handles();
2562 if let Some((inlined, num_bytes, num_handles)) =
2563 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2564 {
2565 let member_inline_size =
2566 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2567 if inlined != (member_inline_size <= 4) {
2568 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2569 }
2570 let inner_offset;
2571 let mut inner_depth = depth.clone();
2572 if inlined {
2573 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2574 inner_offset = next_offset;
2575 } else {
2576 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2577 inner_depth.increment()?;
2578 }
2579 let val_ref =
2580 self.vmo_reclaim_oldest_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2581 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2582 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2583 {
2584 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2585 }
2586 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2587 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2588 }
2589 }
2590
2591 next_offset += envelope_size;
2592 _next_ordinal_to_read += 1;
2593 if next_offset >= end_offset {
2594 return Ok(());
2595 }
2596
2597 while _next_ordinal_to_read < 17 {
2599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2600 _next_ordinal_to_read += 1;
2601 next_offset += envelope_size;
2602 }
2603
2604 let next_out_of_line = decoder.next_out_of_line();
2605 let handles_before = decoder.remaining_handles();
2606 if let Some((inlined, num_bytes, num_handles)) =
2607 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2608 {
2609 let member_inline_size =
2610 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2611 if inlined != (member_inline_size <= 4) {
2612 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2613 }
2614 let inner_offset;
2615 let mut inner_depth = depth.clone();
2616 if inlined {
2617 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2618 inner_offset = next_offset;
2619 } else {
2620 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2621 inner_depth.increment()?;
2622 }
2623 let val_ref =
2624 self.vmo_reclaim_disabled_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
2625 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2626 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2627 {
2628 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2629 }
2630 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2631 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2632 }
2633 }
2634
2635 next_offset += envelope_size;
2636 _next_ordinal_to_read += 1;
2637 if next_offset >= end_offset {
2638 return Ok(());
2639 }
2640
2641 while _next_ordinal_to_read < 18 {
2643 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2644 _next_ordinal_to_read += 1;
2645 next_offset += envelope_size;
2646 }
2647
2648 let next_out_of_line = decoder.next_out_of_line();
2649 let handles_before = decoder.remaining_handles();
2650 if let Some((inlined, num_bytes, num_handles)) =
2651 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2652 {
2653 let member_inline_size =
2654 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2655 if inlined != (member_inline_size <= 4) {
2656 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2657 }
2658 let inner_offset;
2659 let mut inner_depth = depth.clone();
2660 if inlined {
2661 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2662 inner_offset = next_offset;
2663 } else {
2664 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2665 inner_depth.increment()?;
2666 }
2667 let val_ref = self
2668 .vmo_discardable_locked_bytes
2669 .get_or_insert_with(|| fidl::new_empty!(u64, D));
2670 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2671 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2672 {
2673 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2674 }
2675 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2676 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2677 }
2678 }
2679
2680 next_offset += envelope_size;
2681 _next_ordinal_to_read += 1;
2682 if next_offset >= end_offset {
2683 return Ok(());
2684 }
2685
2686 while _next_ordinal_to_read < 19 {
2688 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2689 _next_ordinal_to_read += 1;
2690 next_offset += envelope_size;
2691 }
2692
2693 let next_out_of_line = decoder.next_out_of_line();
2694 let handles_before = decoder.remaining_handles();
2695 if let Some((inlined, num_bytes, num_handles)) =
2696 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2697 {
2698 let member_inline_size =
2699 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2700 if inlined != (member_inline_size <= 4) {
2701 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2702 }
2703 let inner_offset;
2704 let mut inner_depth = depth.clone();
2705 if inlined {
2706 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2707 inner_offset = next_offset;
2708 } else {
2709 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2710 inner_depth.increment()?;
2711 }
2712 let val_ref = self
2713 .vmo_discardable_unlocked_bytes
2714 .get_or_insert_with(|| fidl::new_empty!(u64, D));
2715 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2716 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2717 {
2718 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2719 }
2720 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2721 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2722 }
2723 }
2724
2725 next_offset += envelope_size;
2726
2727 while next_offset < end_offset {
2729 _next_ordinal_to_read += 1;
2730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2731 next_offset += envelope_size;
2732 }
2733
2734 Ok(())
2735 }
2736 }
2737
2738 impl MemoryStatsCompression {
2739 #[inline(always)]
2740 fn max_ordinal_present(&self) -> u64 {
2741 if let Some(_) = self.pages_decompressed_within_log_time {
2742 return 14;
2743 }
2744 if let Some(_) = self.pages_decompressed_unit_ns {
2745 return 13;
2746 }
2747 if let Some(_) = self.critical_memory_page_compressions {
2748 return 12;
2749 }
2750 if let Some(_) = self.memory_pressure_page_compressions {
2751 return 11;
2752 }
2753 if let Some(_) = self.eager_page_compressions {
2754 return 10;
2755 }
2756 if let Some(_) = self.compressed_page_evictions {
2757 return 9;
2758 }
2759 if let Some(_) = self.total_page_decompressions {
2760 return 8;
2761 }
2762 if let Some(_) = self.failed_page_compression_attempts {
2763 return 7;
2764 }
2765 if let Some(_) = self.total_page_compression_attempts {
2766 return 6;
2767 }
2768 if let Some(_) = self.decompression_time {
2769 return 5;
2770 }
2771 if let Some(_) = self.compression_time {
2772 return 4;
2773 }
2774 if let Some(_) = self.compressed_fragmentation_bytes {
2775 return 3;
2776 }
2777 if let Some(_) = self.compressed_storage_bytes {
2778 return 2;
2779 }
2780 if let Some(_) = self.uncompressed_storage_bytes {
2781 return 1;
2782 }
2783 0
2784 }
2785 }
2786
2787 impl fidl::encoding::ValueTypeMarker for MemoryStatsCompression {
2788 type Borrowed<'a> = &'a Self;
2789 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2790 value
2791 }
2792 }
2793
2794 unsafe impl fidl::encoding::TypeMarker for MemoryStatsCompression {
2795 type Owned = Self;
2796
2797 #[inline(always)]
2798 fn inline_align(_context: fidl::encoding::Context) -> usize {
2799 8
2800 }
2801
2802 #[inline(always)]
2803 fn inline_size(_context: fidl::encoding::Context) -> usize {
2804 16
2805 }
2806 }
2807
2808 unsafe impl<D: fidl::encoding::ResourceDialect>
2809 fidl::encoding::Encode<MemoryStatsCompression, D> for &MemoryStatsCompression
2810 {
2811 unsafe fn encode(
2812 self,
2813 encoder: &mut fidl::encoding::Encoder<'_, D>,
2814 offset: usize,
2815 mut depth: fidl::encoding::Depth,
2816 ) -> fidl::Result<()> {
2817 encoder.debug_check_bounds::<MemoryStatsCompression>(offset);
2818 let max_ordinal: u64 = self.max_ordinal_present();
2820 encoder.write_num(max_ordinal, offset);
2821 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2822 if max_ordinal == 0 {
2824 return Ok(());
2825 }
2826 depth.increment()?;
2827 let envelope_size = 8;
2828 let bytes_len = max_ordinal as usize * envelope_size;
2829 #[allow(unused_variables)]
2830 let offset = encoder.out_of_line_offset(bytes_len);
2831 let mut _prev_end_offset: usize = 0;
2832 if 1 > max_ordinal {
2833 return Ok(());
2834 }
2835
2836 let cur_offset: usize = (1 - 1) * envelope_size;
2839
2840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2842
2843 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2848 self.uncompressed_storage_bytes
2849 .as_ref()
2850 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2851 encoder,
2852 offset + cur_offset,
2853 depth,
2854 )?;
2855
2856 _prev_end_offset = cur_offset + envelope_size;
2857 if 2 > max_ordinal {
2858 return Ok(());
2859 }
2860
2861 let cur_offset: usize = (2 - 1) * envelope_size;
2864
2865 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2867
2868 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2873 self.compressed_storage_bytes
2874 .as_ref()
2875 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2876 encoder,
2877 offset + cur_offset,
2878 depth,
2879 )?;
2880
2881 _prev_end_offset = cur_offset + envelope_size;
2882 if 3 > max_ordinal {
2883 return Ok(());
2884 }
2885
2886 let cur_offset: usize = (3 - 1) * envelope_size;
2889
2890 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2892
2893 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2898 self.compressed_fragmentation_bytes
2899 .as_ref()
2900 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2901 encoder,
2902 offset + cur_offset,
2903 depth,
2904 )?;
2905
2906 _prev_end_offset = cur_offset + envelope_size;
2907 if 4 > max_ordinal {
2908 return Ok(());
2909 }
2910
2911 let cur_offset: usize = (4 - 1) * envelope_size;
2914
2915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2917
2918 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2923 self.compression_time
2924 .as_ref()
2925 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2926 encoder,
2927 offset + cur_offset,
2928 depth,
2929 )?;
2930
2931 _prev_end_offset = cur_offset + envelope_size;
2932 if 5 > max_ordinal {
2933 return Ok(());
2934 }
2935
2936 let cur_offset: usize = (5 - 1) * envelope_size;
2939
2940 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2942
2943 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2948 self.decompression_time
2949 .as_ref()
2950 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2951 encoder,
2952 offset + cur_offset,
2953 depth,
2954 )?;
2955
2956 _prev_end_offset = cur_offset + envelope_size;
2957 if 6 > max_ordinal {
2958 return Ok(());
2959 }
2960
2961 let cur_offset: usize = (6 - 1) * envelope_size;
2964
2965 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2967
2968 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2973 self.total_page_compression_attempts
2974 .as_ref()
2975 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2976 encoder,
2977 offset + cur_offset,
2978 depth,
2979 )?;
2980
2981 _prev_end_offset = cur_offset + envelope_size;
2982 if 7 > max_ordinal {
2983 return Ok(());
2984 }
2985
2986 let cur_offset: usize = (7 - 1) * envelope_size;
2989
2990 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2992
2993 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2998 self.failed_page_compression_attempts
2999 .as_ref()
3000 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3001 encoder,
3002 offset + cur_offset,
3003 depth,
3004 )?;
3005
3006 _prev_end_offset = cur_offset + envelope_size;
3007 if 8 > max_ordinal {
3008 return Ok(());
3009 }
3010
3011 let cur_offset: usize = (8 - 1) * envelope_size;
3014
3015 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3017
3018 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3023 self.total_page_decompressions
3024 .as_ref()
3025 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3026 encoder,
3027 offset + cur_offset,
3028 depth,
3029 )?;
3030
3031 _prev_end_offset = cur_offset + envelope_size;
3032 if 9 > max_ordinal {
3033 return Ok(());
3034 }
3035
3036 let cur_offset: usize = (9 - 1) * envelope_size;
3039
3040 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3042
3043 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3048 self.compressed_page_evictions
3049 .as_ref()
3050 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3051 encoder,
3052 offset + cur_offset,
3053 depth,
3054 )?;
3055
3056 _prev_end_offset = cur_offset + envelope_size;
3057 if 10 > max_ordinal {
3058 return Ok(());
3059 }
3060
3061 let cur_offset: usize = (10 - 1) * envelope_size;
3064
3065 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3067
3068 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3073 self.eager_page_compressions
3074 .as_ref()
3075 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3076 encoder,
3077 offset + cur_offset,
3078 depth,
3079 )?;
3080
3081 _prev_end_offset = cur_offset + envelope_size;
3082 if 11 > max_ordinal {
3083 return Ok(());
3084 }
3085
3086 let cur_offset: usize = (11 - 1) * envelope_size;
3089
3090 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3092
3093 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3098 self.memory_pressure_page_compressions
3099 .as_ref()
3100 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3101 encoder,
3102 offset + cur_offset,
3103 depth,
3104 )?;
3105
3106 _prev_end_offset = cur_offset + envelope_size;
3107 if 12 > max_ordinal {
3108 return Ok(());
3109 }
3110
3111 let cur_offset: usize = (12 - 1) * envelope_size;
3114
3115 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3117
3118 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3123 self.critical_memory_page_compressions
3124 .as_ref()
3125 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3126 encoder,
3127 offset + cur_offset,
3128 depth,
3129 )?;
3130
3131 _prev_end_offset = cur_offset + envelope_size;
3132 if 13 > max_ordinal {
3133 return Ok(());
3134 }
3135
3136 let cur_offset: usize = (13 - 1) * envelope_size;
3139
3140 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3142
3143 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3148 self.pages_decompressed_unit_ns
3149 .as_ref()
3150 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3151 encoder,
3152 offset + cur_offset,
3153 depth,
3154 )?;
3155
3156 _prev_end_offset = cur_offset + envelope_size;
3157 if 14 > max_ordinal {
3158 return Ok(());
3159 }
3160
3161 let cur_offset: usize = (14 - 1) * envelope_size;
3164
3165 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3167
3168 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u64, 8>, D>(
3173 self.pages_decompressed_within_log_time.as_ref().map(
3174 <fidl::encoding::Array<u64, 8> as fidl::encoding::ValueTypeMarker>::borrow,
3175 ),
3176 encoder,
3177 offset + cur_offset,
3178 depth,
3179 )?;
3180
3181 _prev_end_offset = cur_offset + envelope_size;
3182
3183 Ok(())
3184 }
3185 }
3186
3187 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3188 for MemoryStatsCompression
3189 {
3190 #[inline(always)]
3191 fn new_empty() -> Self {
3192 Self::default()
3193 }
3194
3195 unsafe fn decode(
3196 &mut self,
3197 decoder: &mut fidl::encoding::Decoder<'_, D>,
3198 offset: usize,
3199 mut depth: fidl::encoding::Depth,
3200 ) -> fidl::Result<()> {
3201 decoder.debug_check_bounds::<Self>(offset);
3202 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3203 None => return Err(fidl::Error::NotNullable),
3204 Some(len) => len,
3205 };
3206 if len == 0 {
3208 return Ok(());
3209 };
3210 depth.increment()?;
3211 let envelope_size = 8;
3212 let bytes_len = len * envelope_size;
3213 let offset = decoder.out_of_line_offset(bytes_len)?;
3214 let mut _next_ordinal_to_read = 0;
3216 let mut next_offset = offset;
3217 let end_offset = offset + bytes_len;
3218 _next_ordinal_to_read += 1;
3219 if next_offset >= end_offset {
3220 return Ok(());
3221 }
3222
3223 while _next_ordinal_to_read < 1 {
3225 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3226 _next_ordinal_to_read += 1;
3227 next_offset += envelope_size;
3228 }
3229
3230 let next_out_of_line = decoder.next_out_of_line();
3231 let handles_before = decoder.remaining_handles();
3232 if let Some((inlined, num_bytes, num_handles)) =
3233 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3234 {
3235 let member_inline_size =
3236 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3237 if inlined != (member_inline_size <= 4) {
3238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3239 }
3240 let inner_offset;
3241 let mut inner_depth = depth.clone();
3242 if inlined {
3243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3244 inner_offset = next_offset;
3245 } else {
3246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3247 inner_depth.increment()?;
3248 }
3249 let val_ref =
3250 self.uncompressed_storage_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
3251 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3253 {
3254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3255 }
3256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3258 }
3259 }
3260
3261 next_offset += envelope_size;
3262 _next_ordinal_to_read += 1;
3263 if next_offset >= end_offset {
3264 return Ok(());
3265 }
3266
3267 while _next_ordinal_to_read < 2 {
3269 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3270 _next_ordinal_to_read += 1;
3271 next_offset += envelope_size;
3272 }
3273
3274 let next_out_of_line = decoder.next_out_of_line();
3275 let handles_before = decoder.remaining_handles();
3276 if let Some((inlined, num_bytes, num_handles)) =
3277 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3278 {
3279 let member_inline_size =
3280 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3281 if inlined != (member_inline_size <= 4) {
3282 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3283 }
3284 let inner_offset;
3285 let mut inner_depth = depth.clone();
3286 if inlined {
3287 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3288 inner_offset = next_offset;
3289 } else {
3290 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3291 inner_depth.increment()?;
3292 }
3293 let val_ref =
3294 self.compressed_storage_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
3295 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3296 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3297 {
3298 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3299 }
3300 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3301 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3302 }
3303 }
3304
3305 next_offset += envelope_size;
3306 _next_ordinal_to_read += 1;
3307 if next_offset >= end_offset {
3308 return Ok(());
3309 }
3310
3311 while _next_ordinal_to_read < 3 {
3313 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3314 _next_ordinal_to_read += 1;
3315 next_offset += envelope_size;
3316 }
3317
3318 let next_out_of_line = decoder.next_out_of_line();
3319 let handles_before = decoder.remaining_handles();
3320 if let Some((inlined, num_bytes, num_handles)) =
3321 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3322 {
3323 let member_inline_size =
3324 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3325 if inlined != (member_inline_size <= 4) {
3326 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3327 }
3328 let inner_offset;
3329 let mut inner_depth = depth.clone();
3330 if inlined {
3331 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3332 inner_offset = next_offset;
3333 } else {
3334 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3335 inner_depth.increment()?;
3336 }
3337 let val_ref = self
3338 .compressed_fragmentation_bytes
3339 .get_or_insert_with(|| fidl::new_empty!(u64, D));
3340 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3341 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3342 {
3343 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3344 }
3345 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3346 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3347 }
3348 }
3349
3350 next_offset += envelope_size;
3351 _next_ordinal_to_read += 1;
3352 if next_offset >= end_offset {
3353 return Ok(());
3354 }
3355
3356 while _next_ordinal_to_read < 4 {
3358 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3359 _next_ordinal_to_read += 1;
3360 next_offset += envelope_size;
3361 }
3362
3363 let next_out_of_line = decoder.next_out_of_line();
3364 let handles_before = decoder.remaining_handles();
3365 if let Some((inlined, num_bytes, num_handles)) =
3366 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3367 {
3368 let member_inline_size =
3369 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3370 if inlined != (member_inline_size <= 4) {
3371 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3372 }
3373 let inner_offset;
3374 let mut inner_depth = depth.clone();
3375 if inlined {
3376 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3377 inner_offset = next_offset;
3378 } else {
3379 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3380 inner_depth.increment()?;
3381 }
3382 let val_ref = self.compression_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
3383 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3384 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3385 {
3386 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3387 }
3388 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3389 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3390 }
3391 }
3392
3393 next_offset += envelope_size;
3394 _next_ordinal_to_read += 1;
3395 if next_offset >= end_offset {
3396 return Ok(());
3397 }
3398
3399 while _next_ordinal_to_read < 5 {
3401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3402 _next_ordinal_to_read += 1;
3403 next_offset += envelope_size;
3404 }
3405
3406 let next_out_of_line = decoder.next_out_of_line();
3407 let handles_before = decoder.remaining_handles();
3408 if let Some((inlined, num_bytes, num_handles)) =
3409 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3410 {
3411 let member_inline_size =
3412 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3413 if inlined != (member_inline_size <= 4) {
3414 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3415 }
3416 let inner_offset;
3417 let mut inner_depth = depth.clone();
3418 if inlined {
3419 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3420 inner_offset = next_offset;
3421 } else {
3422 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3423 inner_depth.increment()?;
3424 }
3425 let val_ref =
3426 self.decompression_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
3427 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3428 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3429 {
3430 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3431 }
3432 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3433 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3434 }
3435 }
3436
3437 next_offset += envelope_size;
3438 _next_ordinal_to_read += 1;
3439 if next_offset >= end_offset {
3440 return Ok(());
3441 }
3442
3443 while _next_ordinal_to_read < 6 {
3445 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3446 _next_ordinal_to_read += 1;
3447 next_offset += envelope_size;
3448 }
3449
3450 let next_out_of_line = decoder.next_out_of_line();
3451 let handles_before = decoder.remaining_handles();
3452 if let Some((inlined, num_bytes, num_handles)) =
3453 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3454 {
3455 let member_inline_size =
3456 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3457 if inlined != (member_inline_size <= 4) {
3458 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3459 }
3460 let inner_offset;
3461 let mut inner_depth = depth.clone();
3462 if inlined {
3463 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3464 inner_offset = next_offset;
3465 } else {
3466 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3467 inner_depth.increment()?;
3468 }
3469 let val_ref = self
3470 .total_page_compression_attempts
3471 .get_or_insert_with(|| fidl::new_empty!(u64, D));
3472 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3473 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3474 {
3475 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3476 }
3477 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3478 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3479 }
3480 }
3481
3482 next_offset += envelope_size;
3483 _next_ordinal_to_read += 1;
3484 if next_offset >= end_offset {
3485 return Ok(());
3486 }
3487
3488 while _next_ordinal_to_read < 7 {
3490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3491 _next_ordinal_to_read += 1;
3492 next_offset += envelope_size;
3493 }
3494
3495 let next_out_of_line = decoder.next_out_of_line();
3496 let handles_before = decoder.remaining_handles();
3497 if let Some((inlined, num_bytes, num_handles)) =
3498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3499 {
3500 let member_inline_size =
3501 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3502 if inlined != (member_inline_size <= 4) {
3503 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3504 }
3505 let inner_offset;
3506 let mut inner_depth = depth.clone();
3507 if inlined {
3508 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3509 inner_offset = next_offset;
3510 } else {
3511 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3512 inner_depth.increment()?;
3513 }
3514 let val_ref = self
3515 .failed_page_compression_attempts
3516 .get_or_insert_with(|| fidl::new_empty!(u64, D));
3517 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3518 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3519 {
3520 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3521 }
3522 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3523 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3524 }
3525 }
3526
3527 next_offset += envelope_size;
3528 _next_ordinal_to_read += 1;
3529 if next_offset >= end_offset {
3530 return Ok(());
3531 }
3532
3533 while _next_ordinal_to_read < 8 {
3535 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3536 _next_ordinal_to_read += 1;
3537 next_offset += envelope_size;
3538 }
3539
3540 let next_out_of_line = decoder.next_out_of_line();
3541 let handles_before = decoder.remaining_handles();
3542 if let Some((inlined, num_bytes, num_handles)) =
3543 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3544 {
3545 let member_inline_size =
3546 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3547 if inlined != (member_inline_size <= 4) {
3548 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3549 }
3550 let inner_offset;
3551 let mut inner_depth = depth.clone();
3552 if inlined {
3553 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3554 inner_offset = next_offset;
3555 } else {
3556 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3557 inner_depth.increment()?;
3558 }
3559 let val_ref =
3560 self.total_page_decompressions.get_or_insert_with(|| fidl::new_empty!(u64, D));
3561 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3562 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3563 {
3564 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3565 }
3566 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3567 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3568 }
3569 }
3570
3571 next_offset += envelope_size;
3572 _next_ordinal_to_read += 1;
3573 if next_offset >= end_offset {
3574 return Ok(());
3575 }
3576
3577 while _next_ordinal_to_read < 9 {
3579 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3580 _next_ordinal_to_read += 1;
3581 next_offset += envelope_size;
3582 }
3583
3584 let next_out_of_line = decoder.next_out_of_line();
3585 let handles_before = decoder.remaining_handles();
3586 if let Some((inlined, num_bytes, num_handles)) =
3587 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3588 {
3589 let member_inline_size =
3590 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3591 if inlined != (member_inline_size <= 4) {
3592 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3593 }
3594 let inner_offset;
3595 let mut inner_depth = depth.clone();
3596 if inlined {
3597 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3598 inner_offset = next_offset;
3599 } else {
3600 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3601 inner_depth.increment()?;
3602 }
3603 let val_ref =
3604 self.compressed_page_evictions.get_or_insert_with(|| fidl::new_empty!(u64, D));
3605 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3606 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3607 {
3608 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3609 }
3610 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3611 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3612 }
3613 }
3614
3615 next_offset += envelope_size;
3616 _next_ordinal_to_read += 1;
3617 if next_offset >= end_offset {
3618 return Ok(());
3619 }
3620
3621 while _next_ordinal_to_read < 10 {
3623 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3624 _next_ordinal_to_read += 1;
3625 next_offset += envelope_size;
3626 }
3627
3628 let next_out_of_line = decoder.next_out_of_line();
3629 let handles_before = decoder.remaining_handles();
3630 if let Some((inlined, num_bytes, num_handles)) =
3631 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3632 {
3633 let member_inline_size =
3634 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3635 if inlined != (member_inline_size <= 4) {
3636 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3637 }
3638 let inner_offset;
3639 let mut inner_depth = depth.clone();
3640 if inlined {
3641 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3642 inner_offset = next_offset;
3643 } else {
3644 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3645 inner_depth.increment()?;
3646 }
3647 let val_ref =
3648 self.eager_page_compressions.get_or_insert_with(|| fidl::new_empty!(u64, D));
3649 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3650 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3651 {
3652 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3653 }
3654 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3655 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3656 }
3657 }
3658
3659 next_offset += envelope_size;
3660 _next_ordinal_to_read += 1;
3661 if next_offset >= end_offset {
3662 return Ok(());
3663 }
3664
3665 while _next_ordinal_to_read < 11 {
3667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3668 _next_ordinal_to_read += 1;
3669 next_offset += envelope_size;
3670 }
3671
3672 let next_out_of_line = decoder.next_out_of_line();
3673 let handles_before = decoder.remaining_handles();
3674 if let Some((inlined, num_bytes, num_handles)) =
3675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3676 {
3677 let member_inline_size =
3678 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3679 if inlined != (member_inline_size <= 4) {
3680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3681 }
3682 let inner_offset;
3683 let mut inner_depth = depth.clone();
3684 if inlined {
3685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3686 inner_offset = next_offset;
3687 } else {
3688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3689 inner_depth.increment()?;
3690 }
3691 let val_ref = self
3692 .memory_pressure_page_compressions
3693 .get_or_insert_with(|| fidl::new_empty!(u64, D));
3694 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3695 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3696 {
3697 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3698 }
3699 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3700 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3701 }
3702 }
3703
3704 next_offset += envelope_size;
3705 _next_ordinal_to_read += 1;
3706 if next_offset >= end_offset {
3707 return Ok(());
3708 }
3709
3710 while _next_ordinal_to_read < 12 {
3712 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3713 _next_ordinal_to_read += 1;
3714 next_offset += envelope_size;
3715 }
3716
3717 let next_out_of_line = decoder.next_out_of_line();
3718 let handles_before = decoder.remaining_handles();
3719 if let Some((inlined, num_bytes, num_handles)) =
3720 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3721 {
3722 let member_inline_size =
3723 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3724 if inlined != (member_inline_size <= 4) {
3725 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3726 }
3727 let inner_offset;
3728 let mut inner_depth = depth.clone();
3729 if inlined {
3730 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3731 inner_offset = next_offset;
3732 } else {
3733 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3734 inner_depth.increment()?;
3735 }
3736 let val_ref = self
3737 .critical_memory_page_compressions
3738 .get_or_insert_with(|| fidl::new_empty!(u64, D));
3739 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3740 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3741 {
3742 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3743 }
3744 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3745 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3746 }
3747 }
3748
3749 next_offset += envelope_size;
3750 _next_ordinal_to_read += 1;
3751 if next_offset >= end_offset {
3752 return Ok(());
3753 }
3754
3755 while _next_ordinal_to_read < 13 {
3757 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3758 _next_ordinal_to_read += 1;
3759 next_offset += envelope_size;
3760 }
3761
3762 let next_out_of_line = decoder.next_out_of_line();
3763 let handles_before = decoder.remaining_handles();
3764 if let Some((inlined, num_bytes, num_handles)) =
3765 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3766 {
3767 let member_inline_size =
3768 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3769 if inlined != (member_inline_size <= 4) {
3770 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3771 }
3772 let inner_offset;
3773 let mut inner_depth = depth.clone();
3774 if inlined {
3775 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3776 inner_offset = next_offset;
3777 } else {
3778 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3779 inner_depth.increment()?;
3780 }
3781 let val_ref =
3782 self.pages_decompressed_unit_ns.get_or_insert_with(|| fidl::new_empty!(u64, D));
3783 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3784 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3785 {
3786 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3787 }
3788 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3789 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3790 }
3791 }
3792
3793 next_offset += envelope_size;
3794 _next_ordinal_to_read += 1;
3795 if next_offset >= end_offset {
3796 return Ok(());
3797 }
3798
3799 while _next_ordinal_to_read < 14 {
3801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3802 _next_ordinal_to_read += 1;
3803 next_offset += envelope_size;
3804 }
3805
3806 let next_out_of_line = decoder.next_out_of_line();
3807 let handles_before = decoder.remaining_handles();
3808 if let Some((inlined, num_bytes, num_handles)) =
3809 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3810 {
3811 let member_inline_size =
3812 <fidl::encoding::Array<u64, 8> as fidl::encoding::TypeMarker>::inline_size(
3813 decoder.context,
3814 );
3815 if inlined != (member_inline_size <= 4) {
3816 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3817 }
3818 let inner_offset;
3819 let mut inner_depth = depth.clone();
3820 if inlined {
3821 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3822 inner_offset = next_offset;
3823 } else {
3824 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3825 inner_depth.increment()?;
3826 }
3827 let val_ref = self
3828 .pages_decompressed_within_log_time
3829 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u64, 8>, D));
3830 fidl::decode!(fidl::encoding::Array<u64, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3832 {
3833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3834 }
3835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3837 }
3838 }
3839
3840 next_offset += envelope_size;
3841
3842 while next_offset < end_offset {
3844 _next_ordinal_to_read += 1;
3845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3846 next_offset += envelope_size;
3847 }
3848
3849 Ok(())
3850 }
3851 }
3852
3853 impl MemoryStatsExtended {
3854 #[inline(always)]
3855 fn max_ordinal_present(&self) -> u64 {
3856 if let Some(_) = self.other_bytes {
3857 return 14;
3858 }
3859 if let Some(_) = self.ipc_bytes {
3860 return 13;
3861 }
3862 if let Some(_) = self.mmu_overhead_bytes {
3863 return 12;
3864 }
3865 if let Some(_) = self.vmo_discardable_unlocked_bytes {
3866 return 11;
3867 }
3868 if let Some(_) = self.vmo_discardable_locked_bytes {
3869 return 10;
3870 }
3871 if let Some(_) = self.vmo_pager_oldest_bytes {
3872 return 9;
3873 }
3874 if let Some(_) = self.vmo_pager_newest_bytes {
3875 return 8;
3876 }
3877 if let Some(_) = self.vmo_pager_total_bytes {
3878 return 7;
3879 }
3880 if let Some(_) = self.vmo_bytes {
3881 return 6;
3882 }
3883 if let Some(_) = self.free_heap_bytes {
3884 return 5;
3885 }
3886 if let Some(_) = self.total_heap_bytes {
3887 return 4;
3888 }
3889 if let Some(_) = self.wired_bytes {
3890 return 3;
3891 }
3892 if let Some(_) = self.free_bytes {
3893 return 2;
3894 }
3895 if let Some(_) = self.total_bytes {
3896 return 1;
3897 }
3898 0
3899 }
3900 }
3901
3902 impl fidl::encoding::ValueTypeMarker for MemoryStatsExtended {
3903 type Borrowed<'a> = &'a Self;
3904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3905 value
3906 }
3907 }
3908
3909 unsafe impl fidl::encoding::TypeMarker for MemoryStatsExtended {
3910 type Owned = Self;
3911
3912 #[inline(always)]
3913 fn inline_align(_context: fidl::encoding::Context) -> usize {
3914 8
3915 }
3916
3917 #[inline(always)]
3918 fn inline_size(_context: fidl::encoding::Context) -> usize {
3919 16
3920 }
3921 }
3922
3923 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MemoryStatsExtended, D>
3924 for &MemoryStatsExtended
3925 {
3926 unsafe fn encode(
3927 self,
3928 encoder: &mut fidl::encoding::Encoder<'_, D>,
3929 offset: usize,
3930 mut depth: fidl::encoding::Depth,
3931 ) -> fidl::Result<()> {
3932 encoder.debug_check_bounds::<MemoryStatsExtended>(offset);
3933 let max_ordinal: u64 = self.max_ordinal_present();
3935 encoder.write_num(max_ordinal, offset);
3936 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3937 if max_ordinal == 0 {
3939 return Ok(());
3940 }
3941 depth.increment()?;
3942 let envelope_size = 8;
3943 let bytes_len = max_ordinal as usize * envelope_size;
3944 #[allow(unused_variables)]
3945 let offset = encoder.out_of_line_offset(bytes_len);
3946 let mut _prev_end_offset: usize = 0;
3947 if 1 > max_ordinal {
3948 return Ok(());
3949 }
3950
3951 let cur_offset: usize = (1 - 1) * envelope_size;
3954
3955 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3957
3958 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3963 self.total_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3964 encoder,
3965 offset + cur_offset,
3966 depth,
3967 )?;
3968
3969 _prev_end_offset = cur_offset + envelope_size;
3970 if 2 > max_ordinal {
3971 return Ok(());
3972 }
3973
3974 let cur_offset: usize = (2 - 1) * envelope_size;
3977
3978 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3980
3981 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3986 self.free_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3987 encoder,
3988 offset + cur_offset,
3989 depth,
3990 )?;
3991
3992 _prev_end_offset = cur_offset + envelope_size;
3993 if 3 > max_ordinal {
3994 return Ok(());
3995 }
3996
3997 let cur_offset: usize = (3 - 1) * envelope_size;
4000
4001 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4003
4004 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4009 self.wired_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4010 encoder,
4011 offset + cur_offset,
4012 depth,
4013 )?;
4014
4015 _prev_end_offset = cur_offset + envelope_size;
4016 if 4 > max_ordinal {
4017 return Ok(());
4018 }
4019
4020 let cur_offset: usize = (4 - 1) * envelope_size;
4023
4024 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4026
4027 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4032 self.total_heap_bytes
4033 .as_ref()
4034 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4035 encoder,
4036 offset + cur_offset,
4037 depth,
4038 )?;
4039
4040 _prev_end_offset = cur_offset + envelope_size;
4041 if 5 > max_ordinal {
4042 return Ok(());
4043 }
4044
4045 let cur_offset: usize = (5 - 1) * envelope_size;
4048
4049 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4051
4052 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4057 self.free_heap_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4058 encoder,
4059 offset + cur_offset,
4060 depth,
4061 )?;
4062
4063 _prev_end_offset = cur_offset + envelope_size;
4064 if 6 > max_ordinal {
4065 return Ok(());
4066 }
4067
4068 let cur_offset: usize = (6 - 1) * envelope_size;
4071
4072 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4074
4075 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4080 self.vmo_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4081 encoder,
4082 offset + cur_offset,
4083 depth,
4084 )?;
4085
4086 _prev_end_offset = cur_offset + envelope_size;
4087 if 7 > max_ordinal {
4088 return Ok(());
4089 }
4090
4091 let cur_offset: usize = (7 - 1) * envelope_size;
4094
4095 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4097
4098 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4103 self.vmo_pager_total_bytes
4104 .as_ref()
4105 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4106 encoder,
4107 offset + cur_offset,
4108 depth,
4109 )?;
4110
4111 _prev_end_offset = cur_offset + envelope_size;
4112 if 8 > max_ordinal {
4113 return Ok(());
4114 }
4115
4116 let cur_offset: usize = (8 - 1) * envelope_size;
4119
4120 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4122
4123 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4128 self.vmo_pager_newest_bytes
4129 .as_ref()
4130 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4131 encoder,
4132 offset + cur_offset,
4133 depth,
4134 )?;
4135
4136 _prev_end_offset = cur_offset + envelope_size;
4137 if 9 > max_ordinal {
4138 return Ok(());
4139 }
4140
4141 let cur_offset: usize = (9 - 1) * envelope_size;
4144
4145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4147
4148 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4153 self.vmo_pager_oldest_bytes
4154 .as_ref()
4155 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4156 encoder,
4157 offset + cur_offset,
4158 depth,
4159 )?;
4160
4161 _prev_end_offset = cur_offset + envelope_size;
4162 if 10 > max_ordinal {
4163 return Ok(());
4164 }
4165
4166 let cur_offset: usize = (10 - 1) * envelope_size;
4169
4170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4172
4173 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4178 self.vmo_discardable_locked_bytes
4179 .as_ref()
4180 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4181 encoder,
4182 offset + cur_offset,
4183 depth,
4184 )?;
4185
4186 _prev_end_offset = cur_offset + envelope_size;
4187 if 11 > max_ordinal {
4188 return Ok(());
4189 }
4190
4191 let cur_offset: usize = (11 - 1) * envelope_size;
4194
4195 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4197
4198 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4203 self.vmo_discardable_unlocked_bytes
4204 .as_ref()
4205 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4206 encoder,
4207 offset + cur_offset,
4208 depth,
4209 )?;
4210
4211 _prev_end_offset = cur_offset + envelope_size;
4212 if 12 > max_ordinal {
4213 return Ok(());
4214 }
4215
4216 let cur_offset: usize = (12 - 1) * envelope_size;
4219
4220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4222
4223 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4228 self.mmu_overhead_bytes
4229 .as_ref()
4230 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4231 encoder,
4232 offset + cur_offset,
4233 depth,
4234 )?;
4235
4236 _prev_end_offset = cur_offset + envelope_size;
4237 if 13 > max_ordinal {
4238 return Ok(());
4239 }
4240
4241 let cur_offset: usize = (13 - 1) * envelope_size;
4244
4245 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4247
4248 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4253 self.ipc_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4254 encoder,
4255 offset + cur_offset,
4256 depth,
4257 )?;
4258
4259 _prev_end_offset = cur_offset + envelope_size;
4260 if 14 > max_ordinal {
4261 return Ok(());
4262 }
4263
4264 let cur_offset: usize = (14 - 1) * envelope_size;
4267
4268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4270
4271 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4276 self.other_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4277 encoder,
4278 offset + cur_offset,
4279 depth,
4280 )?;
4281
4282 _prev_end_offset = cur_offset + envelope_size;
4283
4284 Ok(())
4285 }
4286 }
4287
4288 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MemoryStatsExtended {
4289 #[inline(always)]
4290 fn new_empty() -> Self {
4291 Self::default()
4292 }
4293
4294 unsafe fn decode(
4295 &mut self,
4296 decoder: &mut fidl::encoding::Decoder<'_, D>,
4297 offset: usize,
4298 mut depth: fidl::encoding::Depth,
4299 ) -> fidl::Result<()> {
4300 decoder.debug_check_bounds::<Self>(offset);
4301 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4302 None => return Err(fidl::Error::NotNullable),
4303 Some(len) => len,
4304 };
4305 if len == 0 {
4307 return Ok(());
4308 };
4309 depth.increment()?;
4310 let envelope_size = 8;
4311 let bytes_len = len * envelope_size;
4312 let offset = decoder.out_of_line_offset(bytes_len)?;
4313 let mut _next_ordinal_to_read = 0;
4315 let mut next_offset = offset;
4316 let end_offset = offset + bytes_len;
4317 _next_ordinal_to_read += 1;
4318 if next_offset >= end_offset {
4319 return Ok(());
4320 }
4321
4322 while _next_ordinal_to_read < 1 {
4324 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4325 _next_ordinal_to_read += 1;
4326 next_offset += envelope_size;
4327 }
4328
4329 let next_out_of_line = decoder.next_out_of_line();
4330 let handles_before = decoder.remaining_handles();
4331 if let Some((inlined, num_bytes, num_handles)) =
4332 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4333 {
4334 let member_inline_size =
4335 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4336 if inlined != (member_inline_size <= 4) {
4337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4338 }
4339 let inner_offset;
4340 let mut inner_depth = depth.clone();
4341 if inlined {
4342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4343 inner_offset = next_offset;
4344 } else {
4345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4346 inner_depth.increment()?;
4347 }
4348 let val_ref = self.total_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4349 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4350 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4351 {
4352 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4353 }
4354 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4355 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4356 }
4357 }
4358
4359 next_offset += envelope_size;
4360 _next_ordinal_to_read += 1;
4361 if next_offset >= end_offset {
4362 return Ok(());
4363 }
4364
4365 while _next_ordinal_to_read < 2 {
4367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4368 _next_ordinal_to_read += 1;
4369 next_offset += envelope_size;
4370 }
4371
4372 let next_out_of_line = decoder.next_out_of_line();
4373 let handles_before = decoder.remaining_handles();
4374 if let Some((inlined, num_bytes, num_handles)) =
4375 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4376 {
4377 let member_inline_size =
4378 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4379 if inlined != (member_inline_size <= 4) {
4380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4381 }
4382 let inner_offset;
4383 let mut inner_depth = depth.clone();
4384 if inlined {
4385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4386 inner_offset = next_offset;
4387 } else {
4388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4389 inner_depth.increment()?;
4390 }
4391 let val_ref = self.free_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4392 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4394 {
4395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4396 }
4397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4399 }
4400 }
4401
4402 next_offset += envelope_size;
4403 _next_ordinal_to_read += 1;
4404 if next_offset >= end_offset {
4405 return Ok(());
4406 }
4407
4408 while _next_ordinal_to_read < 3 {
4410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4411 _next_ordinal_to_read += 1;
4412 next_offset += envelope_size;
4413 }
4414
4415 let next_out_of_line = decoder.next_out_of_line();
4416 let handles_before = decoder.remaining_handles();
4417 if let Some((inlined, num_bytes, num_handles)) =
4418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4419 {
4420 let member_inline_size =
4421 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4422 if inlined != (member_inline_size <= 4) {
4423 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4424 }
4425 let inner_offset;
4426 let mut inner_depth = depth.clone();
4427 if inlined {
4428 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4429 inner_offset = next_offset;
4430 } else {
4431 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4432 inner_depth.increment()?;
4433 }
4434 let val_ref = self.wired_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4435 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4436 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4437 {
4438 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4439 }
4440 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4441 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4442 }
4443 }
4444
4445 next_offset += envelope_size;
4446 _next_ordinal_to_read += 1;
4447 if next_offset >= end_offset {
4448 return Ok(());
4449 }
4450
4451 while _next_ordinal_to_read < 4 {
4453 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4454 _next_ordinal_to_read += 1;
4455 next_offset += envelope_size;
4456 }
4457
4458 let next_out_of_line = decoder.next_out_of_line();
4459 let handles_before = decoder.remaining_handles();
4460 if let Some((inlined, num_bytes, num_handles)) =
4461 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4462 {
4463 let member_inline_size =
4464 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4465 if inlined != (member_inline_size <= 4) {
4466 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4467 }
4468 let inner_offset;
4469 let mut inner_depth = depth.clone();
4470 if inlined {
4471 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4472 inner_offset = next_offset;
4473 } else {
4474 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4475 inner_depth.increment()?;
4476 }
4477 let val_ref = self.total_heap_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4478 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4479 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4480 {
4481 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4482 }
4483 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4484 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4485 }
4486 }
4487
4488 next_offset += envelope_size;
4489 _next_ordinal_to_read += 1;
4490 if next_offset >= end_offset {
4491 return Ok(());
4492 }
4493
4494 while _next_ordinal_to_read < 5 {
4496 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4497 _next_ordinal_to_read += 1;
4498 next_offset += envelope_size;
4499 }
4500
4501 let next_out_of_line = decoder.next_out_of_line();
4502 let handles_before = decoder.remaining_handles();
4503 if let Some((inlined, num_bytes, num_handles)) =
4504 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4505 {
4506 let member_inline_size =
4507 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4508 if inlined != (member_inline_size <= 4) {
4509 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4510 }
4511 let inner_offset;
4512 let mut inner_depth = depth.clone();
4513 if inlined {
4514 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4515 inner_offset = next_offset;
4516 } else {
4517 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4518 inner_depth.increment()?;
4519 }
4520 let val_ref = self.free_heap_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4521 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4522 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4523 {
4524 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4525 }
4526 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4527 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4528 }
4529 }
4530
4531 next_offset += envelope_size;
4532 _next_ordinal_to_read += 1;
4533 if next_offset >= end_offset {
4534 return Ok(());
4535 }
4536
4537 while _next_ordinal_to_read < 6 {
4539 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4540 _next_ordinal_to_read += 1;
4541 next_offset += envelope_size;
4542 }
4543
4544 let next_out_of_line = decoder.next_out_of_line();
4545 let handles_before = decoder.remaining_handles();
4546 if let Some((inlined, num_bytes, num_handles)) =
4547 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4548 {
4549 let member_inline_size =
4550 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4551 if inlined != (member_inline_size <= 4) {
4552 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4553 }
4554 let inner_offset;
4555 let mut inner_depth = depth.clone();
4556 if inlined {
4557 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4558 inner_offset = next_offset;
4559 } else {
4560 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4561 inner_depth.increment()?;
4562 }
4563 let val_ref = self.vmo_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4564 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4565 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4566 {
4567 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4568 }
4569 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4570 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4571 }
4572 }
4573
4574 next_offset += envelope_size;
4575 _next_ordinal_to_read += 1;
4576 if next_offset >= end_offset {
4577 return Ok(());
4578 }
4579
4580 while _next_ordinal_to_read < 7 {
4582 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4583 _next_ordinal_to_read += 1;
4584 next_offset += envelope_size;
4585 }
4586
4587 let next_out_of_line = decoder.next_out_of_line();
4588 let handles_before = decoder.remaining_handles();
4589 if let Some((inlined, num_bytes, num_handles)) =
4590 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4591 {
4592 let member_inline_size =
4593 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4594 if inlined != (member_inline_size <= 4) {
4595 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4596 }
4597 let inner_offset;
4598 let mut inner_depth = depth.clone();
4599 if inlined {
4600 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4601 inner_offset = next_offset;
4602 } else {
4603 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4604 inner_depth.increment()?;
4605 }
4606 let val_ref =
4607 self.vmo_pager_total_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4608 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4609 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4610 {
4611 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4612 }
4613 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4614 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4615 }
4616 }
4617
4618 next_offset += envelope_size;
4619 _next_ordinal_to_read += 1;
4620 if next_offset >= end_offset {
4621 return Ok(());
4622 }
4623
4624 while _next_ordinal_to_read < 8 {
4626 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4627 _next_ordinal_to_read += 1;
4628 next_offset += envelope_size;
4629 }
4630
4631 let next_out_of_line = decoder.next_out_of_line();
4632 let handles_before = decoder.remaining_handles();
4633 if let Some((inlined, num_bytes, num_handles)) =
4634 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4635 {
4636 let member_inline_size =
4637 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4638 if inlined != (member_inline_size <= 4) {
4639 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4640 }
4641 let inner_offset;
4642 let mut inner_depth = depth.clone();
4643 if inlined {
4644 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4645 inner_offset = next_offset;
4646 } else {
4647 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4648 inner_depth.increment()?;
4649 }
4650 let val_ref =
4651 self.vmo_pager_newest_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4652 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4653 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4654 {
4655 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4656 }
4657 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4658 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4659 }
4660 }
4661
4662 next_offset += envelope_size;
4663 _next_ordinal_to_read += 1;
4664 if next_offset >= end_offset {
4665 return Ok(());
4666 }
4667
4668 while _next_ordinal_to_read < 9 {
4670 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4671 _next_ordinal_to_read += 1;
4672 next_offset += envelope_size;
4673 }
4674
4675 let next_out_of_line = decoder.next_out_of_line();
4676 let handles_before = decoder.remaining_handles();
4677 if let Some((inlined, num_bytes, num_handles)) =
4678 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4679 {
4680 let member_inline_size =
4681 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4682 if inlined != (member_inline_size <= 4) {
4683 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4684 }
4685 let inner_offset;
4686 let mut inner_depth = depth.clone();
4687 if inlined {
4688 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4689 inner_offset = next_offset;
4690 } else {
4691 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4692 inner_depth.increment()?;
4693 }
4694 let val_ref =
4695 self.vmo_pager_oldest_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4696 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4698 {
4699 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4700 }
4701 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4702 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4703 }
4704 }
4705
4706 next_offset += envelope_size;
4707 _next_ordinal_to_read += 1;
4708 if next_offset >= end_offset {
4709 return Ok(());
4710 }
4711
4712 while _next_ordinal_to_read < 10 {
4714 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4715 _next_ordinal_to_read += 1;
4716 next_offset += envelope_size;
4717 }
4718
4719 let next_out_of_line = decoder.next_out_of_line();
4720 let handles_before = decoder.remaining_handles();
4721 if let Some((inlined, num_bytes, num_handles)) =
4722 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4723 {
4724 let member_inline_size =
4725 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4726 if inlined != (member_inline_size <= 4) {
4727 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4728 }
4729 let inner_offset;
4730 let mut inner_depth = depth.clone();
4731 if inlined {
4732 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4733 inner_offset = next_offset;
4734 } else {
4735 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4736 inner_depth.increment()?;
4737 }
4738 let val_ref = self
4739 .vmo_discardable_locked_bytes
4740 .get_or_insert_with(|| fidl::new_empty!(u64, D));
4741 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4742 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4743 {
4744 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4745 }
4746 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4747 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4748 }
4749 }
4750
4751 next_offset += envelope_size;
4752 _next_ordinal_to_read += 1;
4753 if next_offset >= end_offset {
4754 return Ok(());
4755 }
4756
4757 while _next_ordinal_to_read < 11 {
4759 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4760 _next_ordinal_to_read += 1;
4761 next_offset += envelope_size;
4762 }
4763
4764 let next_out_of_line = decoder.next_out_of_line();
4765 let handles_before = decoder.remaining_handles();
4766 if let Some((inlined, num_bytes, num_handles)) =
4767 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4768 {
4769 let member_inline_size =
4770 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4771 if inlined != (member_inline_size <= 4) {
4772 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4773 }
4774 let inner_offset;
4775 let mut inner_depth = depth.clone();
4776 if inlined {
4777 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4778 inner_offset = next_offset;
4779 } else {
4780 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4781 inner_depth.increment()?;
4782 }
4783 let val_ref = self
4784 .vmo_discardable_unlocked_bytes
4785 .get_or_insert_with(|| fidl::new_empty!(u64, D));
4786 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4788 {
4789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4790 }
4791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4793 }
4794 }
4795
4796 next_offset += envelope_size;
4797 _next_ordinal_to_read += 1;
4798 if next_offset >= end_offset {
4799 return Ok(());
4800 }
4801
4802 while _next_ordinal_to_read < 12 {
4804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4805 _next_ordinal_to_read += 1;
4806 next_offset += envelope_size;
4807 }
4808
4809 let next_out_of_line = decoder.next_out_of_line();
4810 let handles_before = decoder.remaining_handles();
4811 if let Some((inlined, num_bytes, num_handles)) =
4812 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4813 {
4814 let member_inline_size =
4815 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4816 if inlined != (member_inline_size <= 4) {
4817 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4818 }
4819 let inner_offset;
4820 let mut inner_depth = depth.clone();
4821 if inlined {
4822 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4823 inner_offset = next_offset;
4824 } else {
4825 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4826 inner_depth.increment()?;
4827 }
4828 let val_ref =
4829 self.mmu_overhead_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4830 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4832 {
4833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4834 }
4835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4837 }
4838 }
4839
4840 next_offset += envelope_size;
4841 _next_ordinal_to_read += 1;
4842 if next_offset >= end_offset {
4843 return Ok(());
4844 }
4845
4846 while _next_ordinal_to_read < 13 {
4848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4849 _next_ordinal_to_read += 1;
4850 next_offset += envelope_size;
4851 }
4852
4853 let next_out_of_line = decoder.next_out_of_line();
4854 let handles_before = decoder.remaining_handles();
4855 if let Some((inlined, num_bytes, num_handles)) =
4856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4857 {
4858 let member_inline_size =
4859 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4860 if inlined != (member_inline_size <= 4) {
4861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4862 }
4863 let inner_offset;
4864 let mut inner_depth = depth.clone();
4865 if inlined {
4866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4867 inner_offset = next_offset;
4868 } else {
4869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4870 inner_depth.increment()?;
4871 }
4872 let val_ref = self.ipc_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4873 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4874 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4875 {
4876 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4877 }
4878 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4879 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4880 }
4881 }
4882
4883 next_offset += envelope_size;
4884 _next_ordinal_to_read += 1;
4885 if next_offset >= end_offset {
4886 return Ok(());
4887 }
4888
4889 while _next_ordinal_to_read < 14 {
4891 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4892 _next_ordinal_to_read += 1;
4893 next_offset += envelope_size;
4894 }
4895
4896 let next_out_of_line = decoder.next_out_of_line();
4897 let handles_before = decoder.remaining_handles();
4898 if let Some((inlined, num_bytes, num_handles)) =
4899 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4900 {
4901 let member_inline_size =
4902 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4903 if inlined != (member_inline_size <= 4) {
4904 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4905 }
4906 let inner_offset;
4907 let mut inner_depth = depth.clone();
4908 if inlined {
4909 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4910 inner_offset = next_offset;
4911 } else {
4912 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4913 inner_depth.increment()?;
4914 }
4915 let val_ref = self.other_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4916 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4918 {
4919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4920 }
4921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4923 }
4924 }
4925
4926 next_offset += envelope_size;
4927
4928 while next_offset < end_offset {
4930 _next_ordinal_to_read += 1;
4931 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4932 next_offset += envelope_size;
4933 }
4934
4935 Ok(())
4936 }
4937 }
4938
4939 impl PerCpuStats {
4940 #[inline(always)]
4941 fn max_ordinal_present(&self) -> u64 {
4942 if let Some(_) = self.generic_ipis {
4943 return 15;
4944 }
4945 if let Some(_) = self.reschedule_ipis {
4946 return 14;
4947 }
4948 if let Some(_) = self.syscalls {
4949 return 13;
4950 }
4951 if let Some(_) = self.exceptions {
4952 return 12;
4953 }
4954 if let Some(_) = self.page_faults {
4955 return 11;
4956 }
4957 if let Some(_) = self.timers {
4958 return 10;
4959 }
4960 if let Some(_) = self.timer_ints {
4961 return 9;
4962 }
4963 if let Some(_) = self.ints {
4964 return 8;
4965 }
4966 if let Some(_) = self.yields {
4967 return 7;
4968 }
4969 if let Some(_) = self.irq_preempts {
4970 return 6;
4971 }
4972 if let Some(_) = self.context_switches {
4973 return 5;
4974 }
4975 if let Some(_) = self.reschedules {
4976 return 4;
4977 }
4978 if let Some(_) = self.idle_time {
4979 return 3;
4980 }
4981 if let Some(_) = self.flags {
4982 return 2;
4983 }
4984 if let Some(_) = self.cpu_number {
4985 return 1;
4986 }
4987 0
4988 }
4989 }
4990
4991 impl fidl::encoding::ValueTypeMarker for PerCpuStats {
4992 type Borrowed<'a> = &'a Self;
4993 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4994 value
4995 }
4996 }
4997
4998 unsafe impl fidl::encoding::TypeMarker for PerCpuStats {
4999 type Owned = Self;
5000
5001 #[inline(always)]
5002 fn inline_align(_context: fidl::encoding::Context) -> usize {
5003 8
5004 }
5005
5006 #[inline(always)]
5007 fn inline_size(_context: fidl::encoding::Context) -> usize {
5008 16
5009 }
5010 }
5011
5012 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PerCpuStats, D>
5013 for &PerCpuStats
5014 {
5015 unsafe fn encode(
5016 self,
5017 encoder: &mut fidl::encoding::Encoder<'_, D>,
5018 offset: usize,
5019 mut depth: fidl::encoding::Depth,
5020 ) -> fidl::Result<()> {
5021 encoder.debug_check_bounds::<PerCpuStats>(offset);
5022 let max_ordinal: u64 = self.max_ordinal_present();
5024 encoder.write_num(max_ordinal, offset);
5025 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5026 if max_ordinal == 0 {
5028 return Ok(());
5029 }
5030 depth.increment()?;
5031 let envelope_size = 8;
5032 let bytes_len = max_ordinal as usize * envelope_size;
5033 #[allow(unused_variables)]
5034 let offset = encoder.out_of_line_offset(bytes_len);
5035 let mut _prev_end_offset: usize = 0;
5036 if 1 > max_ordinal {
5037 return Ok(());
5038 }
5039
5040 let cur_offset: usize = (1 - 1) * envelope_size;
5043
5044 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5046
5047 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5052 self.cpu_number.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5053 encoder,
5054 offset + cur_offset,
5055 depth,
5056 )?;
5057
5058 _prev_end_offset = cur_offset + envelope_size;
5059 if 2 > max_ordinal {
5060 return Ok(());
5061 }
5062
5063 let cur_offset: usize = (2 - 1) * envelope_size;
5066
5067 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5069
5070 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5075 self.flags.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5076 encoder,
5077 offset + cur_offset,
5078 depth,
5079 )?;
5080
5081 _prev_end_offset = cur_offset + envelope_size;
5082 if 3 > max_ordinal {
5083 return Ok(());
5084 }
5085
5086 let cur_offset: usize = (3 - 1) * envelope_size;
5089
5090 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5092
5093 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5098 self.idle_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5099 encoder,
5100 offset + cur_offset,
5101 depth,
5102 )?;
5103
5104 _prev_end_offset = cur_offset + envelope_size;
5105 if 4 > max_ordinal {
5106 return Ok(());
5107 }
5108
5109 let cur_offset: usize = (4 - 1) * envelope_size;
5112
5113 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5115
5116 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5121 self.reschedules.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5122 encoder,
5123 offset + cur_offset,
5124 depth,
5125 )?;
5126
5127 _prev_end_offset = cur_offset + envelope_size;
5128 if 5 > max_ordinal {
5129 return Ok(());
5130 }
5131
5132 let cur_offset: usize = (5 - 1) * envelope_size;
5135
5136 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5138
5139 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5144 self.context_switches
5145 .as_ref()
5146 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5147 encoder,
5148 offset + cur_offset,
5149 depth,
5150 )?;
5151
5152 _prev_end_offset = cur_offset + envelope_size;
5153 if 6 > max_ordinal {
5154 return Ok(());
5155 }
5156
5157 let cur_offset: usize = (6 - 1) * envelope_size;
5160
5161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5163
5164 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5169 self.irq_preempts.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5170 encoder,
5171 offset + cur_offset,
5172 depth,
5173 )?;
5174
5175 _prev_end_offset = cur_offset + envelope_size;
5176 if 7 > max_ordinal {
5177 return Ok(());
5178 }
5179
5180 let cur_offset: usize = (7 - 1) * envelope_size;
5183
5184 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5186
5187 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5192 self.yields.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5193 encoder,
5194 offset + cur_offset,
5195 depth,
5196 )?;
5197
5198 _prev_end_offset = cur_offset + envelope_size;
5199 if 8 > max_ordinal {
5200 return Ok(());
5201 }
5202
5203 let cur_offset: usize = (8 - 1) * envelope_size;
5206
5207 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5209
5210 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5215 self.ints.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5216 encoder,
5217 offset + cur_offset,
5218 depth,
5219 )?;
5220
5221 _prev_end_offset = cur_offset + envelope_size;
5222 if 9 > max_ordinal {
5223 return Ok(());
5224 }
5225
5226 let cur_offset: usize = (9 - 1) * envelope_size;
5229
5230 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5232
5233 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5238 self.timer_ints.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5239 encoder,
5240 offset + cur_offset,
5241 depth,
5242 )?;
5243
5244 _prev_end_offset = cur_offset + envelope_size;
5245 if 10 > max_ordinal {
5246 return Ok(());
5247 }
5248
5249 let cur_offset: usize = (10 - 1) * envelope_size;
5252
5253 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5255
5256 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5261 self.timers.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5262 encoder,
5263 offset + cur_offset,
5264 depth,
5265 )?;
5266
5267 _prev_end_offset = cur_offset + envelope_size;
5268 if 11 > max_ordinal {
5269 return Ok(());
5270 }
5271
5272 let cur_offset: usize = (11 - 1) * envelope_size;
5275
5276 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5278
5279 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5284 self.page_faults.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5285 encoder,
5286 offset + cur_offset,
5287 depth,
5288 )?;
5289
5290 _prev_end_offset = cur_offset + envelope_size;
5291 if 12 > max_ordinal {
5292 return Ok(());
5293 }
5294
5295 let cur_offset: usize = (12 - 1) * envelope_size;
5298
5299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5301
5302 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5307 self.exceptions.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5308 encoder,
5309 offset + cur_offset,
5310 depth,
5311 )?;
5312
5313 _prev_end_offset = cur_offset + envelope_size;
5314 if 13 > max_ordinal {
5315 return Ok(());
5316 }
5317
5318 let cur_offset: usize = (13 - 1) * envelope_size;
5321
5322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5324
5325 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5330 self.syscalls.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5331 encoder,
5332 offset + cur_offset,
5333 depth,
5334 )?;
5335
5336 _prev_end_offset = cur_offset + envelope_size;
5337 if 14 > max_ordinal {
5338 return Ok(());
5339 }
5340
5341 let cur_offset: usize = (14 - 1) * envelope_size;
5344
5345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5347
5348 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5353 self.reschedule_ipis.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5354 encoder,
5355 offset + cur_offset,
5356 depth,
5357 )?;
5358
5359 _prev_end_offset = cur_offset + envelope_size;
5360 if 15 > max_ordinal {
5361 return Ok(());
5362 }
5363
5364 let cur_offset: usize = (15 - 1) * envelope_size;
5367
5368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5370
5371 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5376 self.generic_ipis.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5377 encoder,
5378 offset + cur_offset,
5379 depth,
5380 )?;
5381
5382 _prev_end_offset = cur_offset + envelope_size;
5383
5384 Ok(())
5385 }
5386 }
5387
5388 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PerCpuStats {
5389 #[inline(always)]
5390 fn new_empty() -> Self {
5391 Self::default()
5392 }
5393
5394 unsafe fn decode(
5395 &mut self,
5396 decoder: &mut fidl::encoding::Decoder<'_, D>,
5397 offset: usize,
5398 mut depth: fidl::encoding::Depth,
5399 ) -> fidl::Result<()> {
5400 decoder.debug_check_bounds::<Self>(offset);
5401 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5402 None => return Err(fidl::Error::NotNullable),
5403 Some(len) => len,
5404 };
5405 if len == 0 {
5407 return Ok(());
5408 };
5409 depth.increment()?;
5410 let envelope_size = 8;
5411 let bytes_len = len * envelope_size;
5412 let offset = decoder.out_of_line_offset(bytes_len)?;
5413 let mut _next_ordinal_to_read = 0;
5415 let mut next_offset = offset;
5416 let end_offset = offset + bytes_len;
5417 _next_ordinal_to_read += 1;
5418 if next_offset >= end_offset {
5419 return Ok(());
5420 }
5421
5422 while _next_ordinal_to_read < 1 {
5424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5425 _next_ordinal_to_read += 1;
5426 next_offset += envelope_size;
5427 }
5428
5429 let next_out_of_line = decoder.next_out_of_line();
5430 let handles_before = decoder.remaining_handles();
5431 if let Some((inlined, num_bytes, num_handles)) =
5432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5433 {
5434 let member_inline_size =
5435 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5436 if inlined != (member_inline_size <= 4) {
5437 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5438 }
5439 let inner_offset;
5440 let mut inner_depth = depth.clone();
5441 if inlined {
5442 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5443 inner_offset = next_offset;
5444 } else {
5445 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5446 inner_depth.increment()?;
5447 }
5448 let val_ref = self.cpu_number.get_or_insert_with(|| fidl::new_empty!(u32, D));
5449 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5451 {
5452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5453 }
5454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5456 }
5457 }
5458
5459 next_offset += envelope_size;
5460 _next_ordinal_to_read += 1;
5461 if next_offset >= end_offset {
5462 return Ok(());
5463 }
5464
5465 while _next_ordinal_to_read < 2 {
5467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5468 _next_ordinal_to_read += 1;
5469 next_offset += envelope_size;
5470 }
5471
5472 let next_out_of_line = decoder.next_out_of_line();
5473 let handles_before = decoder.remaining_handles();
5474 if let Some((inlined, num_bytes, num_handles)) =
5475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5476 {
5477 let member_inline_size =
5478 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5479 if inlined != (member_inline_size <= 4) {
5480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5481 }
5482 let inner_offset;
5483 let mut inner_depth = depth.clone();
5484 if inlined {
5485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5486 inner_offset = next_offset;
5487 } else {
5488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5489 inner_depth.increment()?;
5490 }
5491 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(u32, D));
5492 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5494 {
5495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5496 }
5497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5499 }
5500 }
5501
5502 next_offset += envelope_size;
5503 _next_ordinal_to_read += 1;
5504 if next_offset >= end_offset {
5505 return Ok(());
5506 }
5507
5508 while _next_ordinal_to_read < 3 {
5510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5511 _next_ordinal_to_read += 1;
5512 next_offset += envelope_size;
5513 }
5514
5515 let next_out_of_line = decoder.next_out_of_line();
5516 let handles_before = decoder.remaining_handles();
5517 if let Some((inlined, num_bytes, num_handles)) =
5518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5519 {
5520 let member_inline_size =
5521 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5522 if inlined != (member_inline_size <= 4) {
5523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5524 }
5525 let inner_offset;
5526 let mut inner_depth = depth.clone();
5527 if inlined {
5528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5529 inner_offset = next_offset;
5530 } else {
5531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5532 inner_depth.increment()?;
5533 }
5534 let val_ref = self.idle_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
5535 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5536 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5537 {
5538 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5539 }
5540 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5541 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5542 }
5543 }
5544
5545 next_offset += envelope_size;
5546 _next_ordinal_to_read += 1;
5547 if next_offset >= end_offset {
5548 return Ok(());
5549 }
5550
5551 while _next_ordinal_to_read < 4 {
5553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5554 _next_ordinal_to_read += 1;
5555 next_offset += envelope_size;
5556 }
5557
5558 let next_out_of_line = decoder.next_out_of_line();
5559 let handles_before = decoder.remaining_handles();
5560 if let Some((inlined, num_bytes, num_handles)) =
5561 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5562 {
5563 let member_inline_size =
5564 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5565 if inlined != (member_inline_size <= 4) {
5566 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5567 }
5568 let inner_offset;
5569 let mut inner_depth = depth.clone();
5570 if inlined {
5571 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5572 inner_offset = next_offset;
5573 } else {
5574 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5575 inner_depth.increment()?;
5576 }
5577 let val_ref = self.reschedules.get_or_insert_with(|| fidl::new_empty!(u64, D));
5578 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5579 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5580 {
5581 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5582 }
5583 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5584 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5585 }
5586 }
5587
5588 next_offset += envelope_size;
5589 _next_ordinal_to_read += 1;
5590 if next_offset >= end_offset {
5591 return Ok(());
5592 }
5593
5594 while _next_ordinal_to_read < 5 {
5596 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5597 _next_ordinal_to_read += 1;
5598 next_offset += envelope_size;
5599 }
5600
5601 let next_out_of_line = decoder.next_out_of_line();
5602 let handles_before = decoder.remaining_handles();
5603 if let Some((inlined, num_bytes, num_handles)) =
5604 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5605 {
5606 let member_inline_size =
5607 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5608 if inlined != (member_inline_size <= 4) {
5609 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5610 }
5611 let inner_offset;
5612 let mut inner_depth = depth.clone();
5613 if inlined {
5614 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5615 inner_offset = next_offset;
5616 } else {
5617 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5618 inner_depth.increment()?;
5619 }
5620 let val_ref = self.context_switches.get_or_insert_with(|| fidl::new_empty!(u64, D));
5621 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5622 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5623 {
5624 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5625 }
5626 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5627 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5628 }
5629 }
5630
5631 next_offset += envelope_size;
5632 _next_ordinal_to_read += 1;
5633 if next_offset >= end_offset {
5634 return Ok(());
5635 }
5636
5637 while _next_ordinal_to_read < 6 {
5639 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5640 _next_ordinal_to_read += 1;
5641 next_offset += envelope_size;
5642 }
5643
5644 let next_out_of_line = decoder.next_out_of_line();
5645 let handles_before = decoder.remaining_handles();
5646 if let Some((inlined, num_bytes, num_handles)) =
5647 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5648 {
5649 let member_inline_size =
5650 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5651 if inlined != (member_inline_size <= 4) {
5652 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5653 }
5654 let inner_offset;
5655 let mut inner_depth = depth.clone();
5656 if inlined {
5657 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5658 inner_offset = next_offset;
5659 } else {
5660 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5661 inner_depth.increment()?;
5662 }
5663 let val_ref = self.irq_preempts.get_or_insert_with(|| fidl::new_empty!(u64, D));
5664 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5665 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5666 {
5667 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5668 }
5669 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5670 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5671 }
5672 }
5673
5674 next_offset += envelope_size;
5675 _next_ordinal_to_read += 1;
5676 if next_offset >= end_offset {
5677 return Ok(());
5678 }
5679
5680 while _next_ordinal_to_read < 7 {
5682 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5683 _next_ordinal_to_read += 1;
5684 next_offset += envelope_size;
5685 }
5686
5687 let next_out_of_line = decoder.next_out_of_line();
5688 let handles_before = decoder.remaining_handles();
5689 if let Some((inlined, num_bytes, num_handles)) =
5690 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5691 {
5692 let member_inline_size =
5693 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5694 if inlined != (member_inline_size <= 4) {
5695 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5696 }
5697 let inner_offset;
5698 let mut inner_depth = depth.clone();
5699 if inlined {
5700 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5701 inner_offset = next_offset;
5702 } else {
5703 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5704 inner_depth.increment()?;
5705 }
5706 let val_ref = self.yields.get_or_insert_with(|| fidl::new_empty!(u64, D));
5707 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5708 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5709 {
5710 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5711 }
5712 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5713 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5714 }
5715 }
5716
5717 next_offset += envelope_size;
5718 _next_ordinal_to_read += 1;
5719 if next_offset >= end_offset {
5720 return Ok(());
5721 }
5722
5723 while _next_ordinal_to_read < 8 {
5725 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5726 _next_ordinal_to_read += 1;
5727 next_offset += envelope_size;
5728 }
5729
5730 let next_out_of_line = decoder.next_out_of_line();
5731 let handles_before = decoder.remaining_handles();
5732 if let Some((inlined, num_bytes, num_handles)) =
5733 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5734 {
5735 let member_inline_size =
5736 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5737 if inlined != (member_inline_size <= 4) {
5738 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5739 }
5740 let inner_offset;
5741 let mut inner_depth = depth.clone();
5742 if inlined {
5743 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5744 inner_offset = next_offset;
5745 } else {
5746 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5747 inner_depth.increment()?;
5748 }
5749 let val_ref = self.ints.get_or_insert_with(|| fidl::new_empty!(u64, D));
5750 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5751 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5752 {
5753 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5754 }
5755 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5756 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5757 }
5758 }
5759
5760 next_offset += envelope_size;
5761 _next_ordinal_to_read += 1;
5762 if next_offset >= end_offset {
5763 return Ok(());
5764 }
5765
5766 while _next_ordinal_to_read < 9 {
5768 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5769 _next_ordinal_to_read += 1;
5770 next_offset += envelope_size;
5771 }
5772
5773 let next_out_of_line = decoder.next_out_of_line();
5774 let handles_before = decoder.remaining_handles();
5775 if let Some((inlined, num_bytes, num_handles)) =
5776 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5777 {
5778 let member_inline_size =
5779 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5780 if inlined != (member_inline_size <= 4) {
5781 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5782 }
5783 let inner_offset;
5784 let mut inner_depth = depth.clone();
5785 if inlined {
5786 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5787 inner_offset = next_offset;
5788 } else {
5789 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5790 inner_depth.increment()?;
5791 }
5792 let val_ref = self.timer_ints.get_or_insert_with(|| fidl::new_empty!(u64, D));
5793 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5795 {
5796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5797 }
5798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5800 }
5801 }
5802
5803 next_offset += envelope_size;
5804 _next_ordinal_to_read += 1;
5805 if next_offset >= end_offset {
5806 return Ok(());
5807 }
5808
5809 while _next_ordinal_to_read < 10 {
5811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5812 _next_ordinal_to_read += 1;
5813 next_offset += envelope_size;
5814 }
5815
5816 let next_out_of_line = decoder.next_out_of_line();
5817 let handles_before = decoder.remaining_handles();
5818 if let Some((inlined, num_bytes, num_handles)) =
5819 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5820 {
5821 let member_inline_size =
5822 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5823 if inlined != (member_inline_size <= 4) {
5824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5825 }
5826 let inner_offset;
5827 let mut inner_depth = depth.clone();
5828 if inlined {
5829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5830 inner_offset = next_offset;
5831 } else {
5832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5833 inner_depth.increment()?;
5834 }
5835 let val_ref = self.timers.get_or_insert_with(|| fidl::new_empty!(u64, D));
5836 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5837 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5838 {
5839 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5840 }
5841 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5842 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5843 }
5844 }
5845
5846 next_offset += envelope_size;
5847 _next_ordinal_to_read += 1;
5848 if next_offset >= end_offset {
5849 return Ok(());
5850 }
5851
5852 while _next_ordinal_to_read < 11 {
5854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5855 _next_ordinal_to_read += 1;
5856 next_offset += envelope_size;
5857 }
5858
5859 let next_out_of_line = decoder.next_out_of_line();
5860 let handles_before = decoder.remaining_handles();
5861 if let Some((inlined, num_bytes, num_handles)) =
5862 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5863 {
5864 let member_inline_size =
5865 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5866 if inlined != (member_inline_size <= 4) {
5867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5868 }
5869 let inner_offset;
5870 let mut inner_depth = depth.clone();
5871 if inlined {
5872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5873 inner_offset = next_offset;
5874 } else {
5875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5876 inner_depth.increment()?;
5877 }
5878 let val_ref = self.page_faults.get_or_insert_with(|| fidl::new_empty!(u64, D));
5879 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5880 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5881 {
5882 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5883 }
5884 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5885 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5886 }
5887 }
5888
5889 next_offset += envelope_size;
5890 _next_ordinal_to_read += 1;
5891 if next_offset >= end_offset {
5892 return Ok(());
5893 }
5894
5895 while _next_ordinal_to_read < 12 {
5897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5898 _next_ordinal_to_read += 1;
5899 next_offset += envelope_size;
5900 }
5901
5902 let next_out_of_line = decoder.next_out_of_line();
5903 let handles_before = decoder.remaining_handles();
5904 if let Some((inlined, num_bytes, num_handles)) =
5905 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5906 {
5907 let member_inline_size =
5908 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5909 if inlined != (member_inline_size <= 4) {
5910 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5911 }
5912 let inner_offset;
5913 let mut inner_depth = depth.clone();
5914 if inlined {
5915 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5916 inner_offset = next_offset;
5917 } else {
5918 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5919 inner_depth.increment()?;
5920 }
5921 let val_ref = self.exceptions.get_or_insert_with(|| fidl::new_empty!(u64, D));
5922 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5923 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5924 {
5925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5926 }
5927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5929 }
5930 }
5931
5932 next_offset += envelope_size;
5933 _next_ordinal_to_read += 1;
5934 if next_offset >= end_offset {
5935 return Ok(());
5936 }
5937
5938 while _next_ordinal_to_read < 13 {
5940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5941 _next_ordinal_to_read += 1;
5942 next_offset += envelope_size;
5943 }
5944
5945 let next_out_of_line = decoder.next_out_of_line();
5946 let handles_before = decoder.remaining_handles();
5947 if let Some((inlined, num_bytes, num_handles)) =
5948 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5949 {
5950 let member_inline_size =
5951 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5952 if inlined != (member_inline_size <= 4) {
5953 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5954 }
5955 let inner_offset;
5956 let mut inner_depth = depth.clone();
5957 if inlined {
5958 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5959 inner_offset = next_offset;
5960 } else {
5961 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5962 inner_depth.increment()?;
5963 }
5964 let val_ref = self.syscalls.get_or_insert_with(|| fidl::new_empty!(u64, D));
5965 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5967 {
5968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5969 }
5970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5972 }
5973 }
5974
5975 next_offset += envelope_size;
5976 _next_ordinal_to_read += 1;
5977 if next_offset >= end_offset {
5978 return Ok(());
5979 }
5980
5981 while _next_ordinal_to_read < 14 {
5983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5984 _next_ordinal_to_read += 1;
5985 next_offset += envelope_size;
5986 }
5987
5988 let next_out_of_line = decoder.next_out_of_line();
5989 let handles_before = decoder.remaining_handles();
5990 if let Some((inlined, num_bytes, num_handles)) =
5991 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5992 {
5993 let member_inline_size =
5994 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5995 if inlined != (member_inline_size <= 4) {
5996 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5997 }
5998 let inner_offset;
5999 let mut inner_depth = depth.clone();
6000 if inlined {
6001 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6002 inner_offset = next_offset;
6003 } else {
6004 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6005 inner_depth.increment()?;
6006 }
6007 let val_ref = self.reschedule_ipis.get_or_insert_with(|| fidl::new_empty!(u64, D));
6008 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6009 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6010 {
6011 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6012 }
6013 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6014 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6015 }
6016 }
6017
6018 next_offset += envelope_size;
6019 _next_ordinal_to_read += 1;
6020 if next_offset >= end_offset {
6021 return Ok(());
6022 }
6023
6024 while _next_ordinal_to_read < 15 {
6026 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6027 _next_ordinal_to_read += 1;
6028 next_offset += envelope_size;
6029 }
6030
6031 let next_out_of_line = decoder.next_out_of_line();
6032 let handles_before = decoder.remaining_handles();
6033 if let Some((inlined, num_bytes, num_handles)) =
6034 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6035 {
6036 let member_inline_size =
6037 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6038 if inlined != (member_inline_size <= 4) {
6039 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6040 }
6041 let inner_offset;
6042 let mut inner_depth = depth.clone();
6043 if inlined {
6044 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6045 inner_offset = next_offset;
6046 } else {
6047 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6048 inner_depth.increment()?;
6049 }
6050 let val_ref = self.generic_ipis.get_or_insert_with(|| fidl::new_empty!(u64, D));
6051 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6052 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6053 {
6054 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6055 }
6056 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6057 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6058 }
6059 }
6060
6061 next_offset += envelope_size;
6062
6063 while next_offset < end_offset {
6065 _next_ordinal_to_read += 1;
6066 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6067 next_offset += envelope_size;
6068 }
6069
6070 Ok(())
6071 }
6072 }
6073}