diff --git a/arch/x86/kernel/include/syscall_list.h b/arch/x86/kernel/include/syscall_list.h index 21738bea..b079ca4e 100644 --- a/arch/x86/kernel/include/syscall_list.h +++ b/arch/x86/kernel/include/syscall_list.h @@ -43,6 +43,7 @@ SYSCALL_HANDLED(24, sched_yield) SYSCALL_HANDLED(28, madvise) SYSCALL_HANDLED(39, getpid) SYSCALL_HANDLED(56, clone) +SYSCALL_HANDLED(59, execve) SYSCALL_HANDLED(60, exit) SYSCALL_HANDLED(62, kill) SYSCALL_DELEGATED(63, uname) diff --git a/kernel/syscall.c b/kernel/syscall.c index 35d1c31f..34970de5 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -922,13 +922,22 @@ SYSCALL_DECLARE(arch_prctl) ihk_mc_syscall_arg1(ctx)); } +SYSCALL_DECLARE(execve) +{ + return -EOPNOTSUPP; +} SYSCALL_DECLARE(clone) { int cpuid; int clone_flags = ihk_mc_syscall_arg0(ctx); struct process *new; - + + if(clone_flags == 0x1200011){ + // fork() + return -EOPNOTSUPP; + } + dkprintf("[%d] clone(): stack_pointr: 0x%lX\n", ihk_mc_get_processor_id(), (unsigned long)ihk_mc_syscall_arg1(ctx));