arch_vm_aspace_bindings/
arch_vm_aspace_bindings.rs1#![expect(non_camel_case_types)]
8#![expect(non_upper_case_globals)]
9#![no_std]
10pub use zx_types::{zx_paddr_t as paddr_t, zx_status_t, zx_vaddr_t as vaddr_t};
11
12#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
13#[repr(C, align(8))]
14pub struct __BindgenOpaqueArray8<T>(pub T);
15impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
16 fn default() -> Self {
17 Self([<T as Default>::default(); N])
18 }
19}
20pub type arch_mmu_flags_t = u8;
21pub const ARCH_MMU_FLAG_CACHED: arch_mmu_flags_t = 0;
22pub const ARCH_MMU_FLAG_UNCACHED: arch_mmu_flags_t = 1;
23pub const ARCH_MMU_FLAG_UNCACHED_DEVICE: arch_mmu_flags_t = 2;
24pub const ARCH_MMU_FLAG_WRITE_COMBINING: arch_mmu_flags_t = 3;
25pub const ARCH_MMU_FLAG_CACHE_MASK: arch_mmu_flags_t = 3;
26pub const ARCH_MMU_FLAG_PERM_USER: arch_mmu_flags_t = 4;
27pub const ARCH_MMU_FLAG_PERM_READ: arch_mmu_flags_t = 8;
28pub const ARCH_MMU_FLAG_PERM_WRITE: arch_mmu_flags_t = 16;
29pub const ARCH_MMU_FLAG_PERM_EXECUTE: arch_mmu_flags_t = 32;
30pub const ARCH_MMU_FLAG_PERM_RWX_MASK: arch_mmu_flags_t = 56;
31pub const ARCH_MMU_FLAG_NS: arch_mmu_flags_t = 64;
32pub const ARCH_MMU_FLAG_INVALID: arch_mmu_flags_t = 128;
33pub const ARCH_ASPACE_FLAG_KERNEL: arch_mmu_flags_t = 1;
34pub const ARCH_ASPACE_FLAG_GUEST: arch_mmu_flags_t = 2;
35impl ArchVmAspaceInterface_ExistingEntryAction {
36 pub const Skip: ArchVmAspaceInterface_ExistingEntryAction =
37 ArchVmAspaceInterface_ExistingEntryAction(0);
38 pub const Error: ArchVmAspaceInterface_ExistingEntryAction =
39 ArchVmAspaceInterface_ExistingEntryAction(1);
40 pub const Upgrade: ArchVmAspaceInterface_ExistingEntryAction =
41 ArchVmAspaceInterface_ExistingEntryAction(2);
42}
43#[repr(transparent)]
44#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
45pub struct ArchVmAspaceInterface_ExistingEntryAction(pub u8);
46pub const ArchVmAspaceInterface_ArchUnmapOptions_None: ArchVmAspaceInterface_ArchUnmapOptions = 0;
47pub const ArchVmAspaceInterface_ArchUnmapOptions_Enlarge: ArchVmAspaceInterface_ArchUnmapOptions =
48 1;
49pub const ArchVmAspaceInterface_ArchUnmapOptions_Harvest: ArchVmAspaceInterface_ArchUnmapOptions =
50 2;
51pub type ArchVmAspaceInterface_ArchUnmapOptions = u8;
52impl ArchVmAspaceInterface_NonTerminalAction {
53 pub const FreeUnaccessed: ArchVmAspaceInterface_NonTerminalAction =
54 ArchVmAspaceInterface_NonTerminalAction(0);
55 pub const Retain: ArchVmAspaceInterface_NonTerminalAction =
56 ArchVmAspaceInterface_NonTerminalAction(1);
57}
58#[repr(transparent)]
59#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
60pub struct ArchVmAspaceInterface_NonTerminalAction(pub u8);
61impl ArchVmAspaceInterface_TerminalAction {
62 pub const UpdateAgeAndHarvest: ArchVmAspaceInterface_TerminalAction =
63 ArchVmAspaceInterface_TerminalAction(0);
64 pub const UpdateAge: ArchVmAspaceInterface_TerminalAction =
65 ArchVmAspaceInterface_TerminalAction(1);
66}
67#[repr(transparent)]
68#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
69pub struct ArchVmAspaceInterface_TerminalAction(pub u8);
70pub type ArchVmAspace = __BindgenOpaqueArray8<[u8; 208usize]>;
71unsafe extern "C" {
72 pub fn cpp_arch_vm_aspace_init(aspace: *mut ArchVmAspace) -> zx_status_t;
73}
74unsafe extern "C" {
75 pub fn cpp_arch_vm_aspace_init_shared(aspace: *mut ArchVmAspace) -> zx_status_t;
76}
77unsafe extern "C" {
78 pub fn cpp_arch_vm_aspace_init_restricted(aspace: *mut ArchVmAspace) -> zx_status_t;
79}
80unsafe extern "C" {
81 pub fn cpp_arch_vm_aspace_init_unified(
82 aspace: *mut ArchVmAspace,
83 shared: *mut ArchVmAspace,
84 restricted: *mut ArchVmAspace,
85 ) -> zx_status_t;
86}
87unsafe extern "C" {
88 pub fn cpp_arch_vm_aspace_disable_updates(aspace: *mut ArchVmAspace);
89}
90unsafe extern "C" {
91 pub fn cpp_arch_vm_aspace_destroy(aspace: *mut ArchVmAspace) -> zx_status_t;
92}
93unsafe extern "C" {
94 pub fn cpp_arch_vm_aspace_map_contiguous(
95 aspace: *mut ArchVmAspace,
96 vaddr: vaddr_t,
97 paddr: paddr_t,
98 count: usize,
99 mmu_flags: arch_mmu_flags_t,
100 ) -> zx_status_t;
101}
102unsafe extern "C" {
103 pub fn cpp_arch_vm_aspace_map(
104 aspace: *mut ArchVmAspace,
105 vaddr: vaddr_t,
106 phys: *mut paddr_t,
107 count: usize,
108 mmu_flags: arch_mmu_flags_t,
109 existing_action: ArchVmAspaceInterface_ExistingEntryAction,
110 ) -> zx_status_t;
111}
112unsafe extern "C" {
113 pub fn cpp_arch_vm_aspace_unmap(
114 aspace: *mut ArchVmAspace,
115 vaddr: vaddr_t,
116 count: usize,
117 enlarge: ArchVmAspaceInterface_ArchUnmapOptions,
118 ) -> zx_status_t;
119}
120unsafe extern "C" {
121 pub fn cpp_arch_vm_aspace_unmap_only_enlarge_on_oom(aspace: *mut ArchVmAspace) -> bool;
122}
123unsafe extern "C" {
124 pub fn cpp_arch_vm_aspace_protect(
125 aspace: *mut ArchVmAspace,
126 vaddr: vaddr_t,
127 count: usize,
128 mmu_flags: arch_mmu_flags_t,
129 enlarge: ArchVmAspaceInterface_ArchUnmapOptions,
130 ) -> zx_status_t;
131}
132unsafe extern "C" {
133 pub fn cpp_arch_vm_aspace_query(
134 aspace: *mut ArchVmAspace,
135 vaddr: vaddr_t,
136 paddr: *mut paddr_t,
137 mmu_flags: *mut arch_mmu_flags_t,
138 ) -> zx_status_t;
139}
140unsafe extern "C" {
141 pub fn cpp_arch_vm_aspace_pick_spot(
142 aspace: *mut ArchVmAspace,
143 base: vaddr_t,
144 end: vaddr_t,
145 align: vaddr_t,
146 size: usize,
147 mmu_flags: arch_mmu_flags_t,
148 ) -> vaddr_t;
149}
150unsafe extern "C" {
151 pub fn cpp_arch_vm_aspace_harvest_accessed(
152 aspace: *mut ArchVmAspace,
153 vaddr: vaddr_t,
154 count: usize,
155 non_terminal_action: ArchVmAspaceInterface_NonTerminalAction,
156 terminal_action: ArchVmAspaceInterface_TerminalAction,
157 ) -> zx_status_t;
158}
159unsafe extern "C" {
160 pub fn cpp_arch_vm_aspace_mark_accessed(
161 aspace: *mut ArchVmAspace,
162 vaddr: vaddr_t,
163 count: usize,
164 ) -> zx_status_t;
165}
166unsafe extern "C" {
167 pub fn cpp_arch_vm_aspace_accessed_since_last_check(
168 aspace: *mut ArchVmAspace,
169 clear: bool,
170 ) -> bool;
171}
172unsafe extern "C" {
173 pub fn cpp_arch_vm_aspace_arch_table_phys(aspace: *mut ArchVmAspace) -> paddr_t;
174}