IKC: distribute IKC-interrupt to Linux cpus.

This commit is contained in:
Ken Sato
2017-02-09 17:18:26 +09:00
committed by Balazs Gerofi
parent eaa4d35fab
commit 8daffa939e
13 changed files with 138 additions and 102 deletions

View File

@@ -337,18 +337,14 @@ SYSCALL_DECLARE(track_syscalls)
static void send_syscall(struct syscall_request *req, int cpu, int pid, struct syscall_response *res)
{
struct ikc_scd_packet packet IHK_DMA_ALIGN;
struct ihk_ikc_channel_desc *syscall_channel;
struct ihk_ikc_channel_desc *syscall_channel = get_cpu_local_var(cpu)->ikc2linux;
int ret;
if(req->number == __NR_exit_group ||
req->number == __NR_kill){ // interrupt syscall
extern int num_processors;
syscall_channel = get_cpu_local_var(0)->syscall_channel2;
/* XXX: is this really going to work if multiple processes
* exit/receive signals at the same time?? */
cpu = num_processors;
if (req->number == __NR_kill) {
req->rtid = -1;
pid = req->args[0];
@@ -356,9 +352,6 @@ static void send_syscall(struct syscall_request *req, int cpu, int pid, struct s
if (req->number == __NR_gettid)
pid = req->args[1];
}
else{
syscall_channel = get_cpu_local_var(cpu)->syscall_channel;
}
res->status = 0;
req->valid = 0;