diff --git a/kernel/dev/ps2kbdev.c b/kernel/dev/ps2kbdev.c index f16d0b2..c6d47a4 100644 --- a/kernel/dev/ps2kbdev.c +++ b/kernel/dev/ps2kbdev.c @@ -156,7 +156,7 @@ int32_t ps2kb_intr(void) { IpcMBus *PS2KB_MBUS; -int ps2kbdev_intr(IntrStackFrame *frame) { +void ps2kbdev_intr(IntrStackFrame *frame) { (void)frame; int32_t c = ps2kb_intr(); @@ -164,8 +164,6 @@ int ps2kbdev_intr(IntrStackFrame *frame) { uint8_t b = c; ipc_mbuspublish("ps2kb", &b); } - - return 0; } void ps2kbdev_init(void) { diff --git a/kernel/intr/intr.c b/kernel/intr/intr.c index c5d25ed..57d602a 100644 --- a/kernel/intr/intr.c +++ b/kernel/intr/intr.c @@ -19,14 +19,14 @@ typedef struct IntrHandler { struct IntrHandler *next; - int (*fn)(IntrStackFrame *frame); + void (*fn)(IntrStackFrame *frame); int irq; } IntrHandler; IntrHandler *INTR_HANDLERS = NULL; SpinLock INTR_HANDLERS_SPINLOCK; -void intr_attchhandler(int (*fn)(IntrStackFrame *frame), int irq) { +void intr_attchhandler(void (*fn)(IntrStackFrame *frame), int irq) { IntrHandler *ih = dlmalloc(sizeof(*ih)); ih->fn = fn; ih->irq = irq; @@ -246,13 +246,13 @@ void intr_handleintr(IntrStackFrame *frame) { cpu_hang(); } } else if (frame->trapnum >= 32 && frame->trapnum <= 47) { + intr_pic_eoi(); IntrHandler *ih, *ihtmp; LL_FOREACH_SAFE(INTR_HANDLERS, ih, ihtmp) { if ((uint64_t)ih->irq == frame->trapnum) { ih->fn(frame); } } - intr_pic_eoi(); } else if (frame->trapnum == 0x80) { intr_syscalldispatch(frame); } diff --git a/kernel/intr/intr.h b/kernel/intr/intr.h index d30c8e9..ae240fe 100644 --- a/kernel/intr/intr.h +++ b/kernel/intr/intr.h @@ -35,7 +35,7 @@ typedef struct { uint64_t ss; } PACKED IntrStackFrame; -void intr_attchhandler(int (*fn)(IntrStackFrame *frame), int irq); +void intr_attchhandler(void (*fn)(IntrStackFrame *frame), int irq); int32_t intr_dttchhandler(int irq); void intr_disable(void); void intr_enable(void); diff --git a/kernel/intr/pit.c b/kernel/intr/pit.c index 13eb872..de6f508 100644 --- a/kernel/intr/pit.c +++ b/kernel/intr/pit.c @@ -31,9 +31,8 @@ void intr_pit_wait(uint32_t ms) { while (PIT_TICKS - now < ms); } -int intr_pit_intr(IntrStackFrame *frame) { +void intr_pit_intr(IntrStackFrame *frame) { PIT_TICKS++; - return 0; } void intr_pit_init(void) { diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index e7fc3a8..03f86a2 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -253,10 +253,8 @@ void proc_killself(void) { proc_kill(proc); } -int proc_intr(IntrStackFrame *frame) { - intr_pic_eoi(); +void proc_intr(IntrStackFrame *frame) { proc_sched(frame); - return 0; } void proc_init(void) {