From: Matthias Kruk Date: Sat, 18 Jan 2020 08:30:42 +0000 (+0900) Subject: Deliver keyboard interrupts to keyboard driver X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=23ac85db0bb380156a65f2939fb85b126b6a1267;p=corax Deliver keyboard interrupts to keyboard driver --- diff --git a/kernel/kbd/main.c b/kernel/kbd/main.c index 408dedd..abbb926 100644 --- a/kernel/kbd/main.c +++ b/kernel/kbd/main.c @@ -1,7 +1,57 @@ +#include +#include +#include +#include +#include +#include + +void _kbd_int_handler(int); + +int _int_register(void) +{ + struct sigaction sa; + int ret_val; + + memset(&sa, 0, sizeof(sa)); + + sa.sa_handler = _kbd_int_handler; + sigemptyset(&(sa.sa_mask)); + sigaddset(&(sa.sa_mask), INT_KEYBOARD); + + if(sigaction(SIGHWINT, &sa, NULL) < 0) { + ret_val = -errno; + } else { + ret_val = 0; + } + + return(ret_val); +} + +void _kbd_int_handler(int signal) +{ + +} + int kbd_main(int argc, char *argv[]) { - /* FIXME: Handle interrupts, IPC messages */ - for(;;); + struct cxmsg msg; + int err; + + err = _int_register(); + + if(!err) { + printf("Keyboard interrupt handler registered\n"); + + while(1) { + err = cxrecv(PID_ANY, &msg); + + if(err > 0) { + /* FIXME: Handle received message */ + } + } + } else { + printf("Could not register keyboard interrupt handler\n"); + } return(0); }