Exemple #1
0
int irq_set_redirect(pid_t pid, irqid_t irq) {

	irq_holder[irq] = pid;
	int_set_handler(IRQ2INT(irq), irq_redirect);
	irq_allow(irq);

	return 0;
}
Exemple #2
0
void irq_init() {
    // start initialization
    outb(PIC1, 0x11);
    outb(PIC2, 0x11);

    // set IRQ base numbers for each PIC
    outb(PIC1_DATA, IRQ_BASE);
    outb(PIC2_DATA, IRQ_BASE+8);

    // use IRQ number 2 to relay IRQs from the slave PIC
    outb(PIC1_DATA, 0x04);
    outb(PIC2_DATA, 0x02);

    // finish initialization
    outb(PIC1_DATA, 0x01);
    outb(PIC2_DATA, 0x01);

    // mask all IRQs
    outb(PIC1_DATA, 0xff);
    outb(PIC2_DATA, 0xff);

    irq_allow(0x2c);
}