Skip to main content

arch_vm_aspace_bindings/
arch_vm_aspace_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.arch-vm-aspace-bindings.bindgen.
6
7#![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}