Small update to SYS_IRQCTL -> setting an interrupt policy now allows the caller
to provide an index (0 .. 31) that is passed in the HARD_INT message when an interrupt occurs. The NOTIFY_ARG field contains a bitmap with all indexes for which an interrupt occured.
This commit is contained in:
@@ -401,6 +401,7 @@ tty_t *tp;
|
||||
}
|
||||
|
||||
/* Set interrupt handler and enable keyboard IRQ. */
|
||||
irq_hook_id = KEYBOARD_IRQ; /* id to be returned on interrupt */
|
||||
if ((i=sys_irqsetpolicy(KEYBOARD_IRQ, IRQ_REENABLE, &irq_hook_id)) != OK)
|
||||
panic("TTY", "Couldn't set keyboard IRQ policy", i);
|
||||
if ((i=sys_irqenable(&irq_hook_id)) != OK)
|
||||
|
||||
@@ -210,12 +210,15 @@ PUBLIC void main(void)
|
||||
}
|
||||
case SYS_EVENT: { /* new kernel message is available */
|
||||
sigset_t sigset = (sigset_t) tty_mess.NOTIFY_ARG;
|
||||
|
||||
if (sigismember(&sigset, SIGKSTOP)) {
|
||||
cons_stop(); /* switch to primary console */
|
||||
#if DEAD_CODE
|
||||
if (irq_hook_id != -1) {
|
||||
sys_irqdisable(&irq_hook_id);
|
||||
sys_irqrmpolicy(KEYBOARD_IRQ, &irq_hook_id);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (sigismember(&sigset, SIGTERM)) cons_stop();
|
||||
if (sigismember(&sigset, SIGKMESS)) do_new_kmess(&tty_mess);
|
||||
|
||||
Reference in New Issue
Block a user