Skip to main content

pmm_bindings/
pmm_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-bindings.bindgen.
6
7#![no_std]
8use page_bindings::vm_page_t;
9use page_queues_bindings::PageQueues;
10pub use pmm_arena_bindings::{pmm_arena_info, pmm_arena_info_t};
11pub use pmm_node_bindings::PmmOptDelayReuse;
12pub use zx_types::{zx_paddr_t, zx_status_t};
13pub type PmmNode = pmm_node_bindings::PmmNode;
14pub type VmPageDoublyLinkedList = core::ffi::c_void;
15pub type VmCompression = core::ffi::c_void;
16
17pub const PMM_ALLOC_FLAG_ANY: u32 = 0;
18pub const PMM_ALLOC_FLAG_CAN_WAIT: u32 = 1;
19unsafe extern "C" {
20    pub fn cpp_paddr_to_vm_page(paddr: zx_paddr_t) -> *mut vm_page_t;
21}
22unsafe extern "C" {
23    pub fn cpp_pmm_page_queues() -> *mut PageQueues;
24}
25unsafe extern "C" {
26    pub fn cpp_pmm_get_page_compression() -> *mut VmCompression;
27}
28unsafe extern "C" {
29    pub fn cpp_pmm_alloc_page(
30        flags: u32,
31        out_page: *mut *mut vm_page_t,
32        out_paddr: *mut zx_paddr_t,
33    ) -> zx_status_t;
34}
35unsafe extern "C" {
36    pub fn cpp_pmm_alloc_pages(
37        count: usize,
38        flags: u32,
39        list: *mut VmPageDoublyLinkedList,
40    ) -> zx_status_t;
41}
42unsafe extern "C" {
43    pub fn cpp_pmm_alloc_contiguous(
44        count: usize,
45        flags: u32,
46        align_log2: u8,
47        out_pa: *mut zx_paddr_t,
48        list: *mut VmPageDoublyLinkedList,
49    ) -> zx_status_t;
50}
51unsafe extern "C" {
52    pub fn cpp_pmm_free_page(page: *mut vm_page_t);
53}
54unsafe extern "C" {
55    pub fn cpp_pmm_free_list(list: *mut VmPageDoublyLinkedList);
56}
57unsafe extern "C" {
58    pub fn cpp_pmm_num_arenas() -> usize;
59}
60unsafe extern "C" {
61    pub fn cpp_pmm_get_arena_info(
62        count: usize,
63        i: u64,
64        buffer: *mut pmm_arena_info_t,
65        buffer_size: usize,
66    ) -> zx_status_t;
67}