void disable_irq(unsigned int irq) { if (irq >= SYS_IRQS) { printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); return; } pic_disable_irq(irq); }
void free_irq(unsigned int irq, void *dev_id) { if (irq >= SYS_IRQS) { printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); return; } pic_disable_irq(irq); irq_list[irq].handler = NULL; irq_list[irq].flags = IRQ_FLG_STD; irq_list[irq].dev_id = NULL; irq_list[irq].devname = default_names[irq]; }
void bootloader_apic_calibrate_timer(void) { t_ia32_gate gate; t_sint32 t1; t_sint32 t2; /* * 1) */ apic_write(APIC_REG_DIV, 10); apic_write(APIC_REG_TIMER_CONF, 1 << 16); /* * 2) */ apic_write(APIC_REG_TIMER, 1000000000); /* * 3) */ gate.offset = (t_uint32)bootloader_apic_calibrate_tick; gate.segsel = IA32_PMODE_BOOTLOADER_CS << 3; gate.privilege = 0; gate.type = ia32_type_gate_interrupt; idt_add_gate(NULL, 32, gate); pit_init(200); pic_enable_irq(0); ticks = 0; t1 = apic_read(APIC_REG_COUNT); while (ticks < 100) ; pic_disable_irq(0); t2 = apic_read(APIC_REG_COUNT); /* * 4) */ timeref = (t1 - t2); }
/* cleanup */ error_t rtl8139_cleanup(void) { #if !defined(USE_APIC) pic_disable_irq(0xb); #endif if (!is_null(g_device)) { mm_free(g_device->priv); mm_free(g_device); g_device = null; } return ERROR_SUCCESS; }
void keyboard_disable_irq(void) { pic_disable_irq(KEYBOARD_IRQ_NUM); }
// ===================================================================================================================== void irq_arch_disable(int irq) { pic_disable_irq(irq); }