vm_object_paged_bindings/
vm_object_paged_bindings.rs1#![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}