diff --git a/arch/x86/kernel/cpu.c b/arch/x86/kernel/cpu.c index 6a83759c..067433f5 100644 --- a/arch/x86/kernel/cpu.c +++ b/arch/x86/kernel/cpu.c @@ -977,7 +977,7 @@ void handle_interrupt(int vector, struct x86_user_context *regs) else { list_for_each_entry(h, &handlers[vector - 32], list) { if (h->func) { - h->func(h->priv, vector); + h->func(h->priv); } } } diff --git a/executer/kernel/mcctrl/ikc.c b/executer/kernel/mcctrl/ikc.c index 60174335..791471f1 100644 --- a/executer/kernel/mcctrl/ikc.c +++ b/executer/kernel/mcctrl/ikc.c @@ -216,6 +216,13 @@ static void mcctrl_ikc_init(ihk_os_t os, int cpu, unsigned long rphys, struct ih static int connect_handler_ikc2linux(struct ihk_ikc_channel_info *param) { + struct ihk_ikc_channel_desc *c; + int linux_cpu; + ihk_os_t os = param->channel->remote_os; + + c = param->channel; + linux_cpu = c->recv.queue->read_cpu; + param->packet_handler = syscall_packet_handler; return 0; diff --git a/kernel/host.c b/kernel/host.c index d1e6c6db..ef611f36 100644 --- a/kernel/host.c +++ b/kernel/host.c @@ -741,6 +741,6 @@ void init_host_ikc2mckernel(void) } dkprintf("connected.\n"); - ihk_ikc_set_regular_channel(NULL, param.channel, ihk_ikc_get_processor_id()); + ihk_ikc_set_intr_channel(NULL, param.channel, ihk_ikc_get_processor_id()); } diff --git a/kernel/mem.c b/kernel/mem.c index ed437829..e1a198d5 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -717,7 +717,7 @@ static struct ihk_mc_pa_ops allocator = { void sbox_write(int offset, unsigned int value); static int page_hash_count_pages(void); -static void query_free_mem_interrupt_handler(void *priv, int vector) +static void query_free_mem_interrupt_handler(void *priv) { int i, pages = 0; diff --git a/lib/include/ihk/cpu.h b/lib/include/ihk/cpu.h index c3e9f885..e32b4633 100644 --- a/lib/include/ihk/cpu.h +++ b/lib/include/ihk/cpu.h @@ -29,7 +29,7 @@ unsigned long cpu_disable_interrupt_save(void); struct ihk_mc_interrupt_handler { struct list_head list; - void (*func)(void *, int vector); + void (*func)(void *); void *priv; }; int ihk_mc_register_interrupt_handler(int vector, @@ -38,8 +38,7 @@ int ihk_mc_unregister_interrupt_handler(int vector, struct ihk_mc_interrupt_handler *h); enum ihk_mc_gv_type { - IHK_GV_IKC_MASTER = 0, - IHK_GV_IKC_REGULAR = 1, + IHK_GV_IKC = 1, IHK_GV_QUERY_FREE_MEM = 2 }; @@ -111,8 +110,7 @@ enum ihk_asr_type { int ihk_mc_arch_set_special_register(enum ihk_asr_type, unsigned long value); int ihk_mc_arch_get_special_register(enum ihk_asr_type, unsigned long *value); -extern unsigned int ihk_ikc_master_irq; -extern unsigned int ihk_ikc_regular_irq; +extern unsigned int ihk_ikc_irq; extern unsigned int ihk_ikc_irq_apicid; extern int gettime_local_support;