Skip to main content

pmm_node_bindings/
pmm_node_bindings.rs

1// Copyright 2026 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This file is automatically generated by //zircon/kernel/vm:_kernel_bindgen_crate.pmm-node-bindings.bindgen.
6
7#![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}