From a997af71be912d68b2e1f38cc1f81b1a91b66b74 Mon Sep 17 00:00:00 2001 From: Tomoki Shirasawa Date: Wed, 17 Feb 2016 12:48:12 +0900 Subject: [PATCH] support tkill refs #664 --- arch/x86/kernel/include/syscall_list.h | 1 + kernel/syscall.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/arch/x86/kernel/include/syscall_list.h b/arch/x86/kernel/include/syscall_list.h index 2f955348..6f429df3 100644 --- a/arch/x86/kernel/include/syscall_list.h +++ b/arch/x86/kernel/include/syscall_list.h @@ -107,6 +107,7 @@ SYSCALL_HANDLED(158, arch_prctl) SYSCALL_HANDLED(160, setrlimit) SYSCALL_HANDLED(164, settimeofday) SYSCALL_HANDLED(186, gettid) +SYSCALL_HANDLED(200, tkill) SYSCALL_DELEGATED(201, time) SYSCALL_HANDLED(202, futex) SYSCALL_HANDLED(203, sched_setaffinity) diff --git a/kernel/syscall.c b/kernel/syscall.c index 348595c9..41c27e6f 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -2075,6 +2075,24 @@ SYSCALL_DECLARE(tgkill) return do_kill(thread, tgid, tid, sig, &info, 0); } +SYSCALL_DECLARE(tkill) +{ + int tid = ihk_mc_syscall_arg0(ctx); + int sig = ihk_mc_syscall_arg1(ctx); + struct thread *thread = cpu_local_var(current); + struct siginfo info; + + memset(&info, '\0', sizeof info); + info.si_signo = sig; + info.si_code = SI_TKILL; + info._sifields._kill.si_pid = thread->proc->pid; + + if(tid <= 0) + return -EINVAL; + + return do_kill(thread, -1, tid, sig, &info, 0); +} + int * getcred(int *_buf) {