1#![expect(non_camel_case_types)]
8#![expect(non_upper_case_globals)]
9#![no_std]
10pub use compression_bindings::VmCompression;
11pub use event_bindings::{AutounsignalEvent, Event};
12pub use evictor_bindings::Evictor;
13pub use page_bindings::vm_page_t;
14pub use page_queues_bindings::PageQueues;
15pub use pmm_arena_bindings::PmmArena;
16pub use pmm_checker_bindings::PmmChecker;
17pub use zx_types::{zx_duration_mono_t, zx_instant_mono_t, zx_paddr_t, zx_status_t};
18pub type VmCowPages = *const core::ffi::c_void;
19pub type VmPageDoublyLinkedList = usize;
20
21#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
22#[repr(C, align(8))]
23pub struct __BindgenOpaqueArray8<T>(pub T);
24impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
25 fn default() -> Self {
26 Self([<T as Default>::default(); N])
27 }
28}
29pub const PMM_ALLOC_FLAG_ANY: u32 = 0;
30pub const PMM_ALLOC_FLAG_CAN_WAIT: u32 = 1;
31#[repr(C)]
32#[derive(Debug, Copy, Clone)]
33pub struct std_atomic<_Tp> {
34 pub _phantom_0: ::core::marker::PhantomData<::core::cell::UnsafeCell<_Tp>>,
35 pub _address: u8,
36}
37pub type std_atomic___base = u8;
38#[repr(u8)]
39#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
40pub enum PmmOptDelayReuse {
41 Default = 0,
42 Yes = 1,
43}
44#[repr(C)]
45#[repr(align(16))]
46pub struct PmmNode {
47 pub canary_: u32,
48 pub __bindgen_padding_0: [u8; 4usize],
49 pub lock_: __BindgenOpaqueArray8<[u8; 24usize]>,
50 pub arena_cumulative_size_: u64,
51 pub free_count_: __BindgenOpaqueArray8<[u8; 8usize]>,
52 pub free_loaned_count_: __BindgenOpaqueArray8<[u8; 8usize]>,
53 pub loaned_count_: __BindgenOpaqueArray8<[u8; 8usize]>,
54 pub loan_cancelled_count_: __BindgenOpaqueArray8<[u8; 8usize]>,
55 pub free_list_: VmPageDoublyLinkedList,
56 pub loaned_list_lock_: __BindgenOpaqueArray8<[u8; 24usize]>,
57 pub free_loaned_list_: VmPageDoublyLinkedList,
58 pub phys_handoff_temporary_list_: VmPageDoublyLinkedList,
59 pub phys_handoff_vmo_list_: VmPageDoublyLinkedList,
60 pub permanently_reserved_list_: VmPageDoublyLinkedList,
61 pub should_wait_: PmmNode_ShouldWaitState,
62 pub __bindgen_padding_1: [u8; 4usize],
63 pub should_wait_free_pages_level_: u64,
64 pub may_allocate_evt_: AutounsignalEvent,
65 pub alloc_failed_no_mem_: u8,
66 pub __bindgen_padding_2: [u8; 7usize],
67 pub first_alloc_failure_: PmmNode_AllocFailure,
68 pub mem_signal_: *mut Event,
69 pub mem_signal_lower_bound_: u64,
70 pub mem_signal_upper_bound_: u64,
71 pub page_queues_: PageQueues,
72 pub __bindgen_padding_3: [u8; 8usize],
73 pub evictor_: Evictor,
74 pub compression_lock_: __BindgenOpaqueArray8<[u8; 24usize]>,
75 pub page_compression_: __BindgenOpaqueArray8<[u8; 8usize]>,
76 pub free_fill_enabled_: u8,
77 pub all_free_pages_filled_: bool,
78 pub __bindgen_padding_4: [u8; 6usize],
79 pub checker_: PmmChecker,
80 pub random_should_wait_seed_: usize,
81 pub used_arena_count_: usize,
82 pub arenas_: [PmmArena; 16usize],
83 pub __bindgen_padding_5: [u8; 8usize],
84}
85#[repr(C)]
86#[derive(Debug, Copy, Clone)]
87pub struct PmmNode_AllocFailure {
88 pub type_: PmmNode_AllocFailure_Type,
89 pub __bindgen_padding_0: [u8; 7usize],
90 pub size: usize,
91 pub free_count: u64,
92}
93#[repr(u8)]
94#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
95pub enum PmmNode_AllocFailure_Type {
96 None = 0,
97 Pmm = 1,
98 Heap = 2,
99 Handle = 3,
100 Other = 4,
101}
102#[repr(i32)]
103#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
104pub enum PmmNode_ShouldWaitState {
105 Never = 0,
106 OnceLevelTripped = 1,
107 UntilReset = 2,
108}
109pub const PmmNode_kIndexZeroBits: ::core::ffi::c_int = 3;
110pub const PmmNode_kArenaCount: usize = 16;
111pub const PmmNode_kArenaBits: ::core::ffi::c_int = 4;
112pub const PmmNode_kMaxPagesPerArena: usize = 33554432;
113pub const PmmNode_kArenaMask: u32 = 15;
114#[repr(C)]
115pub struct FreeLoanedPagesHolder {
116 pub used_: bool,
117 pub __bindgen_padding_0: [u8; 7usize],
118 pub pages_: VmPageDoublyLinkedList,
119 pub waiters_: __BindgenOpaqueArray8<[u8; 8usize]>,
120}
121#[repr(C)]
122pub struct FreeLoanedPagesHolder_Waiter {
123 pub _base: __BindgenOpaqueArray8<[u8; 8usize]>,
124 pub event: Event,
125}