summaryrefslogtreecommitdiff
path: root/kernel/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/interrupts.c')
-rw-r--r--kernel/interrupts.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/interrupts.c b/kernel/interrupts.c
index ce1d7c7..aed1a50 100644
--- a/kernel/interrupts.c
+++ b/kernel/interrupts.c
@@ -64,6 +64,8 @@ void interrupt_register(uint32_t irq, uint32_t func_addr)
*/
uint32_t interrupt_handler(uint32_t esp, uint32_t irq)
{
+ uint32_t cpu=smp_get(SMP_APIC_ID);
+
if(handlers[irq]!=0)
{
uint32_t (*f)(uint32_t esp)=handlers[irq];
@@ -76,7 +78,11 @@ uint32_t interrupt_handler(uint32_t esp, uint32_t irq)
if(irq==INTERRUPT_APIC_TIMER)
{
- compositor_wake();
+ if(cpu==0)
+ {
+ compositor_wake();
+ scheduler_wake_worker(esp);
+ }
}
if(irq==INTERRUPT_APIC_TIMER || irq==INTERRUPT_IPI)