diff --git a/include/m/syscall_defs.h b/include/m/syscall_defs.h index 97f3890..49f5eea 100644 --- a/include/m/syscall_defs.h +++ b/include/m/syscall_defs.h @@ -9,7 +9,7 @@ #define SYS_PROC_DROP_RESOURCE 6 #define SYS_PROC_MUTEX_LOCK 8 #define SYS_PROC_MUTEX_UNLOCK 9 -#define SYS_PROC_SPAWN_THREAD 10 +#define SYS_PROC_CLONE 10 #define SYS_PROC_SCHED 11 #define SYS_PROC_TRANSLATE_V2P 12 diff --git a/init/init.c b/init/init.c index c075a4d..5ea4c6a 100644 --- a/init/init.c +++ b/init/init.c @@ -34,7 +34,7 @@ int make_thread (void (*fn) (void)) { return -ST_OOM_ERROR; uintptr_t stack_top = (uintptr_t)stack + stack_size; - return proc_spawn_thread (stack_top, stack_size, (void*)fn); + return proc_clone (stack_top, stack_size, (void*)fn); } void app_main (void) { diff --git a/kernel/amd64/proc.c b/kernel/amd64/proc.c index 74c2b5b..8ff48d3 100644 --- a/kernel/amd64/proc.c +++ b/kernel/amd64/proc.c @@ -106,8 +106,8 @@ struct proc* proc_from_elf (uint8_t* elf_contents) { return proc; } -struct proc* proc_spawn_thread (struct proc* proto, uintptr_t vstack_top, size_t stack_size, - uintptr_t entry) { +struct proc* proc_clone (struct proc* proto, uintptr_t vstack_top, size_t stack_size, + uintptr_t entry) { struct limine_hhdm_response* hhdm = limine_hhdm_request.response; spin_lock_ctx_t ctxprt, ctxrs; int rid; diff --git a/kernel/sys/proc.h b/kernel/sys/proc.h index 2f2b086..d2fe89f 100644 --- a/kernel/sys/proc.h +++ b/kernel/sys/proc.h @@ -6,8 +6,8 @@ struct proc; struct proc* proc_from_elf (uint8_t* elf_contents); -struct proc* proc_spawn_thread (struct proc* proto, uintptr_t vstack_top, size_t stack_size, - uintptr_t entry); +struct proc* proc_clone (struct proc* proto, uintptr_t vstack_top, size_t stack_size, + uintptr_t entry); void proc_cleanup (struct proc* proc); #endif // _KERNEL_SYS_PROC_H diff --git a/kernel/syscall/syscall.c b/kernel/syscall/syscall.c index 46e8172..2d6b285 100644 --- a/kernel/syscall/syscall.c +++ b/kernel/syscall/syscall.c @@ -212,15 +212,15 @@ DEFINE_SYSCALL (sys_proc_drop_resource) { return ST_OK; } -/* int proc_spawn_thread (uintptr_t vstack_top, size_t stack_size, void* entry) */ -DEFINE_SYSCALL (sys_proc_spawn_thread) { +/* int proc_clone (uintptr_t vstack_top, size_t stack_size, void* entry) */ +DEFINE_SYSCALL (sys_proc_clone) { uintptr_t vstack_top = a1; size_t stack_size = (size_t)a2; uintptr_t entry = a3; struct cpu* cpu = proc->cpu; - struct proc* new = proc_spawn_thread (proc, vstack_top, stack_size, entry); + struct proc* new = proc_clone (proc, vstack_top, stack_size, entry); DEBUG ("new=%p\n", new); @@ -273,7 +273,7 @@ static syscall_handler_func_t handler_table[] = { [SYS_PROC_DROP_RESOURCE] = &sys_proc_drop_resource, [SYS_PROC_MUTEX_LOCK] = &sys_proc_mutex_lock, [SYS_PROC_MUTEX_UNLOCK] = &sys_proc_mutex_unlock, - [SYS_PROC_SPAWN_THREAD] = &sys_proc_spawn_thread, + [SYS_PROC_CLONE] = &sys_proc_clone, [SYS_PROC_SCHED] = &sys_proc_sched, [SYS_PROC_TRANSLATE_V2P] = &sys_proc_translate_v2p, }; diff --git a/libmsl/m/proc.c b/libmsl/m/proc.c index 4433224..9cf0014 100644 --- a/libmsl/m/proc.c +++ b/libmsl/m/proc.c @@ -33,9 +33,8 @@ int proc_mutex_unlock (int mutex_rid, int vis) { return syscall (SYS_PROC_MUTEX_UNLOCK, (uintptr_t)mutex_rid, (uintptr_t)vis, 0, 0, 0, 0); } -int proc_spawn_thread (uintptr_t vstack_top, size_t stack_size, void* entry) { - return syscall (SYS_PROC_SPAWN_THREAD, vstack_top, (uintptr_t)stack_size, (uintptr_t)entry, 0, 0, - 0); +int proc_clone (uintptr_t vstack_top, size_t stack_size, void* entry) { + return syscall (SYS_PROC_CLONE, vstack_top, (uintptr_t)stack_size, (uintptr_t)entry, 0, 0, 0); } int proc_translate_v2p (uintptr_t vaddr, uintptr_t* out_paddr) { diff --git a/libmsl/m/proc.h b/libmsl/m/proc.h index b2b25fc..e65c40c 100644 --- a/libmsl/m/proc.h +++ b/libmsl/m/proc.h @@ -27,7 +27,7 @@ int proc_create_resource (int rid, int type, int vis, void* buffer); int proc_drop_resource (int rid, int vis); int proc_mutex_lock (int mutex_rid, int vis); int proc_mutex_unlock (int mutex_rid, int vis); -int proc_spawn_thread (uintptr_t vstack_top, size_t stack_size, void* entry); +int proc_clone (uintptr_t vstack_top, size_t stack_size, void* entry); int proc_sched (void); int proc_translate_v2p (uintptr_t vaddr, uintptr_t* out_paddr);