libmango: add syscalls to handle cow-attached vm-objects

This commit is contained in:
2026-04-19 20:12:11 +01:00
parent c105e17be9
commit 61a8e6fc40
3 changed files with 63 additions and 51 deletions
+2
View File
@@ -102,6 +102,8 @@ SYSCALL_GATE vm_controller_create SYS_VM_CONTROLLER_CREATE 1
SYSCALL_GATE vm_controller_recv SYS_VM_CONTROLLER_RECV 2
SYSCALL_GATE vm_controller_recv_async SYS_VM_CONTROLLER_RECV_ASYNC 3
SYSCALL_GATE vm_controller_create_object SYS_VM_CONTROLLER_CREATE_OBJECT 7
SYSCALL_GATE vm_controller_prepare_attach SYS_VM_CONTROLLER_PREPARE_ATTACH 3
SYSCALL_GATE vm_controller_finish_attach SYS_VM_CONTROLLER_FINISH_ATTACH 3
SYSCALL_GATE vm_controller_detach_object SYS_VM_CONTROLLER_DETACH_OBJECT 2
SYSCALL_GATE vm_controller_supply_pages SYS_VM_CONTROLLER_SUPPLY_PAGES 6
+8
View File
@@ -80,6 +80,14 @@ extern kern_status_t vm_controller_create_object(
size_t data_len,
vm_prot_t prot,
kern_handle_t *out);
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);
extern kern_status_t vm_controller_detach_object(
kern_handle_t ctrl,
kern_handle_t vmo);
+53 -51
View File
@@ -1,56 +1,58 @@
#ifndef MANGO_SYSCALL_H_
#define MANGO_SYSCALL_H_
#define SYS_KERN_LOG 1
#define SYS_KERN_HANDLE_CLOSE 2
#define SYS_KERN_HANDLE_TRANSFER 3
#define SYS_KERN_CONFIG_GET 4
#define SYS_KERN_CONFIG_SET 5
#define SYS_KERN_OBJECT_WAIT 6
#define SYS_KERN_OBJECT_WAIT_ASYNC 7
#define SYS_TASK_EXIT 8
#define SYS_TASK_SELF 9
#define SYS_TASK_CREATE 10
#define SYS_TASK_CREATE_THREAD 11
#define SYS_TASK_GET_ADDRESS_SPACE 12
#define SYS_TASK_CONFIG_GET 13
#define SYS_TASK_CONFIG_SET 14
#define SYS_THREAD_SELF 15
#define SYS_THREAD_START 16
#define SYS_THREAD_EXIT 17
#define SYS_THREAD_CONFIG_GET 18
#define SYS_THREAD_CONFIG_SET 19
#define SYS_VM_OBJECT_CREATE 20
#define SYS_VM_OBJECT_READ 21
#define SYS_VM_OBJECT_WRITE 22
#define SYS_VM_OBJECT_COPY 23
#define SYS_ADDRESS_SPACE_READ 24
#define SYS_ADDRESS_SPACE_WRITE 25
#define SYS_ADDRESS_SPACE_MAP 26
#define SYS_ADDRESS_SPACE_UNMAP 27
#define SYS_ADDRESS_SPACE_RESERVE 28
#define SYS_ADDRESS_SPACE_RELEASE 29
#define SYS_MSG_SEND 30
#define SYS_MSG_RECV 31
#define SYS_MSG_REPLY 32
#define SYS_MSG_READ 33
#define SYS_MSG_WRITE 34
#define SYS_CHANNEL_CREATE 35
#define SYS_PORT_CREATE 36
#define SYS_PORT_CONNECT 37
#define SYS_PORT_DISCONNECT 38
#define SYS_EQUEUE_CREATE 39
#define SYS_EQUEUE_DEQUEUE 40
#define SYS_VM_CONTROLLER_CREATE 41
#define SYS_VM_CONTROLLER_RECV 42
#define SYS_VM_CONTROLLER_RECV_ASYNC 43
#define SYS_VM_CONTROLLER_CREATE_OBJECT 44
#define SYS_VM_CONTROLLER_DETACH_OBJECT 45
#define SYS_VM_CONTROLLER_SUPPLY_PAGES 46
#define SYS_FUTEX_WAIT 47
#define SYS_FUTEX_WAKE 48
#define SYS_KERN_OBJECT_QUERY 49
#define SYS_TASK_DUPLICATE 50
#define SYS_KERN_HANDLE_CONTROL 51
#define SYS_KERN_LOG 1
#define SYS_KERN_HANDLE_CLOSE 2
#define SYS_KERN_HANDLE_TRANSFER 3
#define SYS_KERN_HANDLE_CONTROL 4
#define SYS_KERN_CONFIG_GET 5
#define SYS_KERN_CONFIG_SET 6
#define SYS_KERN_OBJECT_WAIT 7
#define SYS_KERN_OBJECT_WAIT_ASYNC 8
#define SYS_TASK_EXIT 9
#define SYS_TASK_SELF 10
#define SYS_TASK_CREATE 11
#define SYS_TASK_CREATE_THREAD 12
#define SYS_TASK_GET_ADDRESS_SPACE 13
#define SYS_TASK_CONFIG_GET 14
#define SYS_TASK_CONFIG_SET 15
#define SYS_TASK_DUPLICATE 16
#define SYS_THREAD_SELF 17
#define SYS_THREAD_START 18
#define SYS_THREAD_EXIT 19
#define SYS_THREAD_CONFIG_GET 20
#define SYS_THREAD_CONFIG_SET 21
#define SYS_VM_OBJECT_CREATE 22
#define SYS_VM_OBJECT_READ 23
#define SYS_VM_OBJECT_WRITE 24
#define SYS_VM_OBJECT_COPY 25
#define SYS_ADDRESS_SPACE_READ 26
#define SYS_ADDRESS_SPACE_WRITE 27
#define SYS_ADDRESS_SPACE_MAP 28
#define SYS_ADDRESS_SPACE_UNMAP 29
#define SYS_ADDRESS_SPACE_RESERVE 30
#define SYS_ADDRESS_SPACE_RELEASE 31
#define SYS_MSG_SEND 32
#define SYS_MSG_RECV 33
#define SYS_MSG_REPLY 34
#define SYS_MSG_READ 35
#define SYS_MSG_WRITE 36
#define SYS_CHANNEL_CREATE 37
#define SYS_PORT_CREATE 38
#define SYS_PORT_CONNECT 39
#define SYS_PORT_DISCONNECT 40
#define SYS_EQUEUE_CREATE 41
#define SYS_EQUEUE_DEQUEUE 42
#define SYS_VM_CONTROLLER_CREATE 43
#define SYS_VM_CONTROLLER_RECV 44
#define SYS_VM_CONTROLLER_RECV_ASYNC 45
#define SYS_VM_CONTROLLER_CREATE_OBJECT 46
#define SYS_VM_CONTROLLER_PREPARE_ATTACH 47
#define SYS_VM_CONTROLLER_FINISH_ATTACH 48
#define SYS_VM_CONTROLLER_DETACH_OBJECT 49
#define SYS_VM_CONTROLLER_SUPPLY_PAGES 50
#define SYS_FUTEX_WAIT 51
#define SYS_FUTEX_WAKE 52
#define SYS_KERN_OBJECT_QUERY 53
#endif