diff options
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r-- | src/kernel/syscall.C | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index d4df30733..04c65eb10 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -67,6 +67,18 @@ void kernel_execute_hype_doorbell() l_work = t->cpu->doorbell_actions.pop(); } + //IPC messages come in only on the master, so + //If this is a doorbell to the master -- check + cpu_t* master = CpuManager::getMasterCPU(); + if(t->cpu == master) + { + size_t pir = getPIR(); + printk("IPC msg pir %lx incoming\n", pir); + //Send message to the intrrp in userspace indicating it has + // potential a pending IPC message. + InterruptMsgHdlr::sendIpcMsg(pir); + } + if (t->cpu->idle_task == t) { t->cpu->scheduler->returnRunnable(); |