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