diff --git a/libmango/arch/x86_64/syscall.S b/libmango/arch/x86_64/syscall.S index 817dfa2..a31c6f2 100644 --- a/libmango/arch/x86_64/syscall.S +++ b/libmango/arch/x86_64/syscall.S @@ -57,7 +57,7 @@ SYSCALL_GATE task_exit SYS_TASK_EXIT 1 SYSCALL_GATE task_self SYS_TASK_SELF 1 -SYSCALL_GATE task_create SYS_TASK_CREATE 5 +SYSCALL_GATE task_create SYS_TASK_CREATE 6 SYSCALL_GATE task_duplicate SYS_TASK_DUPLICATE 2 SYSCALL_GATE task_create_thread SYS_TASK_CREATE_THREAD 6 SYSCALL_GATE task_get_address_space SYS_TASK_GET_ADDRESS_SPACE 1 diff --git a/libmango/include-user/mango/task.h b/libmango/include-user/mango/task.h index c163fbe..beb8ba8 100644 --- a/libmango/include-user/mango/task.h +++ b/libmango/include-user/mango/task.h @@ -9,6 +9,7 @@ extern kern_status_t task_self(kern_handle_t *out); extern kern_status_t task_create( kern_handle_t parent, + task_flags_t flags, const char *name, size_t name_len, kern_handle_t *out_task, diff --git a/libmango/include/mango/types.h b/libmango/include/mango/types.h index 63298ab..701212e 100644 --- a/libmango/include/mango/types.h +++ b/libmango/include/mango/types.h @@ -16,6 +16,10 @@ #define MAP_ADDRESS_INVALID ((virt_addr_t)0) #define KERN_HANDLE_INVALID ((kern_handle_t)0xFFFFFFFF) +/* task creation flags */ +#define TASK_F_DEFAULT 0x0000u +#define TASK_F_CLONE_ALL_HANDLES 0x0001u + /* config keys for use with kern_config_get/kern_config_set */ #define KERN_CFG_INVALID 0x00000u #define KERN_CFG_PAGE_SIZE 0x00001u @@ -118,6 +122,7 @@ typedef uint32_t kern_handle_t; typedef uint32_t kern_config_key_t; typedef uint32_t vm_prot_t; typedef uint32_t vm_flags_t; +typedef uint32_t task_flags_t; typedef int64_t ssize_t; typedef uint32_t kern_futex_t; typedef uint32_t kern_msg_type_t;