Skip to main content

vm_object_paged_bindings/
vm_object_paged_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.vm-object-paged-bindings.bindgen.
6
7#![expect(non_camel_case_types)]
8#![expect(non_upper_case_globals)]
9#![no_std]
10use page_bindings::vm_page_t;
11use page_source_bindings::PageSource;
12use vm_cow_pages_bindings::VmCowPages;
13use vm_object_bindings::VmObject;
14use zx_types::zx_status_t;
15
16#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
17#[repr(C, align(8))]
18pub struct __BindgenOpaqueArray8<T>(pub T);
19impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
20    fn default() -> Self {
21        Self([<T as Default>::default(); N])
22    }
23}
24#[repr(C)]
25#[repr(align(4))]
26#[derive(Debug, Copy, Clone)]
27pub struct StreamSizeManager {
28    pub _bindgen_opaque_blob: u32,
29}
30unsafe extern "C" {
31    pub fn cpp_vm_object_paged_cow_pages(vmo: *const VmObjectPaged) -> *const VmCowPages;
32}
33#[repr(C)]
34#[repr(align(8))]
35#[derive(Debug, Copy, Clone)]
36pub struct VmObjectPaged {
37    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 200usize]>,
38}
39pub type VmObjectPaged_ReferenceListNodeState = __BindgenOpaqueArray8<[u8; 16usize]>;
40#[repr(C)]
41#[derive(Debug, Copy, Clone)]
42pub struct VmObjectPaged_ReferenceListTraits {
43    pub __bindgen_padding_0: u8,
44    pub _address: u8,
45}
46pub type VmObjectPaged_ReferenceList = __BindgenOpaqueArray8<[u8; 8usize]>;
47pub const VmObjectPaged_kResizable: u32 = 2;
48pub const VmObjectPaged_kContiguous: u32 = 4;
49pub const VmObjectPaged_kSlice: u32 = 8;
50pub const VmObjectPaged_kDiscardable: u32 = 16;
51pub const VmObjectPaged_kAlwaysPinned: u32 = 32;
52pub const VmObjectPaged_kReference: u32 = 64;
53pub const VmObjectPaged_kCanBlockOnPageRequests: u32 = 2147483648;
54unsafe extern "C" {
55    pub fn cpp_vm_object_paged_create(
56        pmm_alloc_flags: u32,
57        options: u32,
58        size: u64,
59        out_status: *mut zx_status_t,
60    ) -> *mut VmObjectPaged;
61}
62unsafe extern "C" {
63    pub fn cpp_vm_object_paged_create_contiguous(
64        pmm_alloc_flags: u32,
65        size: u64,
66        alignment_log2: u8,
67        out_status: *mut zx_status_t,
68    ) -> *mut VmObjectPaged;
69}
70unsafe extern "C" {
71    pub fn cpp_vm_object_paged_create_external(
72        src: *mut PageSource,
73        options: u32,
74        size: u64,
75        out_status: *mut zx_status_t,
76    ) -> *mut VmObjectPaged;
77}
78unsafe extern "C" {
79    pub fn cpp_vm_object_paged_reset_pager_vmo_stats(vmo: *mut VmObjectPaged);
80}
81unsafe extern "C" {
82    pub fn cpp_vm_object_paged_create_from_wired_pages(
83        data: *const ::core::ffi::c_void,
84        size: usize,
85        exclusive: bool,
86        out_status: *mut zx_status_t,
87    ) -> *mut VmObjectPaged;
88}
89unsafe extern "C" {
90    pub fn cpp_vm_object_paged_as_vm_object(vmo: *mut VmObjectPaged) -> *mut VmObject;
91}
92unsafe extern "C" {
93    pub fn cpp_vm_object_as_vm_object_paged(vmo: *mut VmObject) -> *mut VmObjectPaged;
94}
95unsafe extern "C" {
96    pub fn cpp_vm_object_paged_debug_get_cow_pages(vmo: *mut VmObjectPaged) -> *mut VmCowPages;
97}
98unsafe extern "C" {
99    pub fn cpp_vm_object_paged_size_locked(vmo: *const VmObjectPaged) -> u64;
100}
101unsafe extern "C" {
102    pub fn cpp_vm_object_paged_lock_is_held(vmo: *const VmObjectPaged) -> bool;
103}
104unsafe extern "C" {
105    pub fn cpp_vm_object_paged_debug_get_page(
106        vmo: *mut VmObjectPaged,
107        offset: u64,
108    ) -> *mut vm_page_t;
109}
110unsafe extern "C" {
111    pub fn cpp_vm_object_paged_zero_range(
112        vmo: *const VmObjectPaged,
113        offset: u64,
114        length: u64,
115    ) -> zx_status_t;
116}
117unsafe extern "C" {
118    pub fn cpp_vm_object_paged_zero_range_untracked(
119        vmo: *const VmObjectPaged,
120        offset: u64,
121        length: u64,
122    ) -> zx_status_t;
123}
124unsafe extern "C" {
125    pub fn cpp_vm_object_paged_resize(vmo: *mut VmObjectPaged, size: u64) -> zx_status_t;
126}
127unsafe extern "C" {
128    pub fn cpp_vm_object_paged_unmap_and_call(
129        vmo: *mut VmObjectPaged,
130        offset: u64,
131        len: u64,
132        call_fn: ::core::option::Option<unsafe extern "C" fn(ctx: *mut ::core::ffi::c_void)>,
133        call_ctx: *mut ::core::ffi::c_void,
134    );
135}
136unsafe extern "C" {
137    pub fn cpp_vm_object_paged_set_user_stream_size(
138        vmo: *mut VmObjectPaged,
139        ssm: *mut StreamSizeManager,
140    );
141}
142unsafe extern "C" {
143    pub fn cpp_vm_object_paged_user_stream_size_locked(
144        vmo: *mut VmObjectPaged,
145        out_stream_size: *mut u64,
146    ) -> bool;
147}