From 863b85bab66ef5e00ba6da913ae3b5a2b992e3e6 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 4 May 2023 21:21:01 -0300 Subject: [PATCH] keyboard: fix ipl --- kernel-src/io/keyboard.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/kernel-src/io/keyboard.c b/kernel-src/io/keyboard.c index 167c9975..f4424ecf 100644 --- a/kernel-src/io/keyboard.c +++ b/kernel-src/io/keyboard.c @@ -39,7 +39,7 @@ static void destroykb(keyboard_t *kb) { } void keyboard_sendpacket(keyboard_t *kb, kbpacket_t *packet) { - interrupt_raiseipl(IPL_KEYBOARD); + long ipl = interrupt_raiseipl(IPL_KEYBOARD); switch (packet->keycode) { case KEYCODE_LEFTCTRL: if (packet->flags & KBPACKET_FLAGS_RELEASED) @@ -99,27 +99,27 @@ void keyboard_sendpacket(keyboard_t *kb, kbpacket_t *packet) { if (ringbuffer_write(&keyboard_console->packetbuffer, packet, sizeof(kbpacket_t)) != 0) semaphore_signal(&keyboard_console->semaphore); - interrupt_loweripl(IPL_KEYBOARD); + interrupt_loweripl(ipl); } int keyboard_wait(keyboard_t *kb, kbpacket_t *packet) { int e = semaphore_wait(&kb->semaphore, true); if (e == EINTR) return e; - interrupt_raiseipl(IPL_KEYBOARD); + long ipl = interrupt_raiseipl(IPL_KEYBOARD); __assert(ringbuffer_read(&kb->packetbuffer, packet, sizeof(kbpacket_t)) == sizeof(kbpacket_t)); - interrupt_loweripl(IPL_KEYBOARD); + interrupt_loweripl(ipl); return 0; } bool keyboard_get(keyboard_t *kb, kbpacket_t *packet) { - interrupt_raiseipl(IPL_KEYBOARD); + long ipl = interrupt_raiseipl(IPL_KEYBOARD); bool ok = ringbuffer_read(&kb->packetbuffer, packet, sizeof(kbpacket_t)) == sizeof(kbpacket_t); - interrupt_loweripl(IPL_KEYBOARD); + interrupt_loweripl(ipl); return ok; }