From a01ae910514439a4d74b01fe911132f4dd3582d7 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Fri, 12 Aug 2016 12:26:14 +0900 Subject: [PATCH] mcctrl: use IKC packet pools --- executer/kernel/mcctrl/control.c | 9 +++++++-- executer/kernel/mcctrl/ikc.c | 2 +- kernel/host.c | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index c6e1f3ae..9d4f937c 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -617,7 +617,8 @@ retry_alloc: task_tgid_vnr(current), task_pid_vnr(current), packet->req.number); - kfree(packet); + ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet, + (usrdata->channels + packet->ref)->c); goto retry; } @@ -651,6 +652,9 @@ retry_alloc: return 0; } + ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet, + (usrdata->channels + packet->ref)->c); + if (mcctrl_delete_per_thread_data(ppd, current) < 0) { kprintf("%s: error deleting per-thread data\n", __FUNCTION__); return -EINVAL; @@ -798,7 +802,8 @@ long mcexec_ret_syscall(ihk_os_t os, struct syscall_ret_desc *__user arg) __return_syscall(os, packet, ret.ret, task_pid_vnr(current)); /* Free packet */ - kfree(packet); + ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet, + (usrdata->channels + packet->ref)->c); return 0; } diff --git a/executer/kernel/mcctrl/ikc.c b/executer/kernel/mcctrl/ikc.c index 36199950..0103a266 100644 --- a/executer/kernel/mcctrl/ikc.c +++ b/executer/kernel/mcctrl/ikc.c @@ -116,7 +116,7 @@ static int syscall_packet_handler(struct ihk_ikc_channel_desc *c, * mcexec_ret_syscall(), for the rest, free it here. */ if (msg != SCD_MSG_SYSCALL_ONESIDE) { - kfree(pisp); + ihk_ikc_release_packet((struct ihk_ikc_free_packet *)__packet, c); } return 0; } diff --git a/kernel/host.c b/kernel/host.c index d9d5763a..2f4f9138 100644 --- a/kernel/host.c +++ b/kernel/host.c @@ -687,7 +687,7 @@ static int syscall_packet_handler(struct ihk_ikc_channel_desc *c, } - kfree(packet); + ihk_ikc_release_packet((struct ihk_ikc_free_packet *)packet, c); return ret; }