libkernaux/include/kernaux/drivers/intel_8259_pic.h

58 lines
1.2 KiB
C

/**
* @brief A driver for Intel 8259-compatible programmable interrupt controller
*
* @details
* This is not a driver for a random Intel 8259-compatible PIC, but only for a
* typical configuration of it that can be found in most PCs.
*
* @see https://en.wikipedia.org/wiki/Intel_8259
* @see https://wiki.osdev.org/8259_PIC
* @see https://pdos.csail.mit.edu/6.828/2005/readings/hardware/8259A.pdf
*/
#ifndef KERNAUX_INCLUDED_DRIVERS_INTEL_8259_PIC
#define KERNAUX_INCLUDED_DRIVERS_INTEL_8259_PIC
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Enable PIC
*/
void kernaux_drivers_intel_8259_pic_enable_all();
/**
* @brief Disable PIC
*/
void kernaux_drivers_intel_8259_pic_disable_all();
/**
* @brief Enable single IRQ line
*/
void kernaux_drivers_intel_8259_pic_enable(unsigned char number);
/**
* @brief Disable single IRQ line
*/
void kernaux_drivers_intel_8259_pic_disable(unsigned char number);
/**
* @brief Remap PIC
*/
void kernaux_drivers_intel_8259_pic_remap(
unsigned char new_master_start,
unsigned char new_slave_start
);
/**
* @brief Signal end of interrupt
*/
void kernaux_drivers_intel_8259_pic_eoi(unsigned char number);
#ifdef __cplusplus
}
#endif
#endif