| // Copyright 2026 The Fuchsia Authors |
| // |
| // Use of this source code is governed by a MIT-style |
| // license that can be found in the LICENSE file or at |
| // https://opensource.org/licenses/MIT |
| |
| #ifndef ZIRCON_KERNEL_VM_INCLUDE_VM_VM_OBJECT_PAGED_FFI_H_ |
| #define ZIRCON_KERNEL_VM_INCLUDE_VM_VM_OBJECT_PAGED_FFI_H_ |
| |
| #include <zircon/compiler.h> |
| #include <zircon/types.h> |
| |
| #include "vm/vm_object_paged.h" |
| |
| __BEGIN_CDECLS |
| |
| VmObjectPaged* cpp_vm_object_paged_create(uint32_t pmm_alloc_flags, uint32_t options, uint64_t size, |
| zx_status_t* out_status); |
| VmObjectPaged* cpp_vm_object_paged_create_contiguous(uint32_t pmm_alloc_flags, uint64_t size, |
| uint8_t alignment_log2, |
| zx_status_t* out_status); |
| VmObjectPaged* cpp_vm_object_paged_create_external(PageSource* src, uint32_t options, uint64_t size, |
| zx_status_t* out_status); |
| void cpp_vm_object_paged_reset_pager_vmo_stats(VmObjectPaged* vmo); |
| VmObjectPaged* cpp_vm_object_paged_create_from_wired_pages(const void* data, size_t size, |
| bool exclusive, zx_status_t* out_status); |
| VmObject* cpp_vm_object_paged_as_vm_object(VmObjectPaged* vmo); |
| VmObjectPaged* cpp_vm_object_as_vm_object_paged(VmObject* vmo); |
| VmCowPages* cpp_vm_object_paged_debug_get_cow_pages(VmObjectPaged* vmo); |
| vm_page_t* cpp_vm_object_paged_debug_get_page(VmObjectPaged* vmo, uint64_t offset); |
| |
| zx_status_t cpp_vm_object_paged_zero_range(const VmObjectPaged* vmo, uint64_t offset, |
| uint64_t length); |
| zx_status_t cpp_vm_object_paged_zero_range_untracked(const VmObjectPaged* vmo, uint64_t offset, |
| uint64_t length); |
| zx_status_t cpp_vm_object_paged_resize(VmObjectPaged* vmo, uint64_t size); |
| void cpp_vm_object_paged_unmap_and_call(VmObjectPaged* vmo, uint64_t offset, uint64_t len, |
| void (*call_fn)(void* ctx), void* call_ctx); |
| void cpp_vm_object_paged_set_user_stream_size(VmObjectPaged* vmo, StreamSizeManager* ssm); |
| bool cpp_vm_object_paged_user_stream_size_locked(VmObjectPaged* vmo, uint64_t* out_stream_size); |
| |
| __END_CDECLS |
| |
| #endif // ZIRCON_KERNEL_VM_INCLUDE_VM_VM_OBJECT_PAGED_FFI_H_ |