2026-04-30 20:30:36 +01:00
|
|
|
#ifndef MAGENTA_VM_H_
|
|
|
|
|
#define MAGENTA_VM_H_
|
2026-02-19 19:22:06 +00:00
|
|
|
|
2026-04-30 20:30:36 +01:00
|
|
|
#include <magenta/status.h>
|
|
|
|
|
#include <magenta/types.h>
|
2026-02-19 19:22:06 +00:00
|
|
|
|
|
|
|
|
extern kern_status_t vm_object_create(
|
|
|
|
|
const char *name,
|
|
|
|
|
size_t name_len,
|
|
|
|
|
size_t data_len,
|
|
|
|
|
vm_prot_t prot,
|
|
|
|
|
kern_handle_t *out);
|
|
|
|
|
extern kern_status_t vm_object_read(
|
|
|
|
|
kern_handle_t object,
|
|
|
|
|
void *dst,
|
|
|
|
|
off_t offset,
|
|
|
|
|
size_t count,
|
|
|
|
|
size_t *nr_read);
|
|
|
|
|
extern kern_status_t vm_object_write(
|
|
|
|
|
kern_handle_t object,
|
|
|
|
|
const void *src,
|
|
|
|
|
off_t offset,
|
|
|
|
|
size_t count,
|
|
|
|
|
size_t *nr_written);
|
|
|
|
|
extern kern_status_t vm_object_copy(
|
|
|
|
|
kern_handle_t dst,
|
|
|
|
|
off_t dst_offset,
|
|
|
|
|
kern_handle_t src,
|
|
|
|
|
off_t src_offset,
|
|
|
|
|
size_t count,
|
|
|
|
|
size_t *nr_copied);
|
|
|
|
|
|
2026-03-13 19:44:50 +00:00
|
|
|
extern kern_status_t address_space_read(
|
2026-02-19 19:22:06 +00:00
|
|
|
kern_handle_t region,
|
|
|
|
|
void *dst,
|
2026-03-13 19:44:50 +00:00
|
|
|
virt_addr_t base,
|
2026-02-19 19:22:06 +00:00
|
|
|
size_t count,
|
|
|
|
|
size_t *nr_read);
|
2026-03-13 19:44:50 +00:00
|
|
|
extern kern_status_t address_space_write(
|
2026-02-19 19:22:06 +00:00
|
|
|
kern_handle_t region,
|
|
|
|
|
const void *src,
|
2026-03-13 19:44:50 +00:00
|
|
|
virt_addr_t base,
|
2026-02-19 19:22:06 +00:00
|
|
|
size_t count,
|
|
|
|
|
size_t *nr_read);
|
2026-03-13 19:44:50 +00:00
|
|
|
extern kern_status_t address_space_map(
|
2026-02-19 19:22:06 +00:00
|
|
|
kern_handle_t region,
|
|
|
|
|
virt_addr_t map_address,
|
|
|
|
|
kern_handle_t object,
|
|
|
|
|
off_t object_offset,
|
|
|
|
|
size_t length,
|
2026-04-21 21:11:42 +01:00
|
|
|
vm_flags_t flags,
|
2026-02-19 19:22:06 +00:00
|
|
|
vm_prot_t prot,
|
|
|
|
|
virt_addr_t *out_base_address);
|
2026-03-13 19:44:50 +00:00
|
|
|
extern kern_status_t address_space_unmap(
|
2026-02-19 19:22:06 +00:00
|
|
|
kern_handle_t region,
|
2026-03-13 19:44:50 +00:00
|
|
|
virt_addr_t base,
|
|
|
|
|
size_t length);
|
|
|
|
|
extern kern_status_t address_space_reserve(
|
|
|
|
|
kern_handle_t region,
|
|
|
|
|
virt_addr_t base,
|
2026-02-19 19:22:06 +00:00
|
|
|
size_t length,
|
|
|
|
|
virt_addr_t *out_base_address);
|
2026-03-13 19:44:50 +00:00
|
|
|
extern kern_status_t address_space_release(
|
2026-02-19 19:22:06 +00:00
|
|
|
kern_handle_t region,
|
2026-03-13 19:44:50 +00:00
|
|
|
virt_addr_t base,
|
2026-02-19 19:22:06 +00:00
|
|
|
size_t length);
|
|
|
|
|
|
2026-03-12 20:39:28 +00:00
|
|
|
extern kern_status_t vm_controller_create(kern_handle_t *out);
|
|
|
|
|
extern kern_status_t vm_controller_recv(
|
|
|
|
|
kern_handle_t ctrl,
|
2026-04-19 20:13:07 +01:00
|
|
|
equeue_packet_vm_request_t *out);
|
2026-03-12 20:39:28 +00:00
|
|
|
extern kern_status_t vm_controller_recv_async(
|
|
|
|
|
kern_handle_t ctrl,
|
2026-03-14 22:39:14 +00:00
|
|
|
kern_handle_t eq,
|
|
|
|
|
equeue_key_t key);
|
2026-03-12 20:39:28 +00:00
|
|
|
extern kern_status_t vm_controller_create_object(
|
|
|
|
|
kern_handle_t ctrl,
|
|
|
|
|
const char *name,
|
|
|
|
|
size_t name_len,
|
2026-03-14 22:39:14 +00:00
|
|
|
equeue_key_t key,
|
2026-03-12 20:39:28 +00:00
|
|
|
size_t data_len,
|
|
|
|
|
vm_prot_t prot,
|
|
|
|
|
kern_handle_t *out);
|
2026-04-19 20:12:11 +01:00
|
|
|
extern kern_status_t vm_controller_prepare_attach(
|
|
|
|
|
kern_handle_t ctrl,
|
|
|
|
|
uint64_t req_id,
|
|
|
|
|
kern_handle_t *out_vmo);
|
|
|
|
|
extern kern_status_t vm_controller_finish_attach(
|
|
|
|
|
kern_handle_t ctrl,
|
|
|
|
|
uint64_t req_id,
|
|
|
|
|
equeue_key_t new_key);
|
2026-03-12 20:39:28 +00:00
|
|
|
extern kern_status_t vm_controller_detach_object(
|
|
|
|
|
kern_handle_t ctrl,
|
|
|
|
|
kern_handle_t vmo);
|
|
|
|
|
extern kern_status_t vm_controller_supply_pages(
|
|
|
|
|
kern_handle_t ctrl,
|
|
|
|
|
kern_handle_t dst_vmo,
|
|
|
|
|
off_t dst_offset,
|
|
|
|
|
kern_handle_t src_vmo,
|
|
|
|
|
off_t src_offset,
|
|
|
|
|
size_t length);
|
|
|
|
|
|
2026-02-19 19:22:06 +00:00
|
|
|
#endif
|