libmango: add syscalls to handle cow-attached vm-objects
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user