1
Files
churlos/src/device/interrupt/PIC.h
2022-12-07 16:40:43 +01:00

52 lines
2.1 KiB
C++
Executable File

/*****************************************************************************
* *
* P I C *
* *
*---------------------------------------------------------------------------*
* Beschreibung: Mit Hilfe des PICs koennen Hardware-Interrupts (IRQs) *
* einzeln zugelassen oder unterdrueckt werden. Auf diese *
* Weise wird also bestimmt, ob die Unterbrechung eines *
* Geraetes ueberhaupt an den Prozessor weitergegeben wird. *
* Selbst dann erfolgt eine Aktivierung der Unterbrechungs- *
* routine nur, wenn der Prozessor bereit ist, auf Unter- *
* brechungen zu reagieren. Dies kann mit Hilfe der Klasse *
* CPU festgelegt werden. *
* *
* Autor: Olaf Spinczyk, TU Dortmund *
*****************************************************************************/
#ifndef PIC_include__
#define PIC_include__
#include "device/port/IOport.h"
class PIC {
private:
static const IOport IMR1; // interrupt mask register von PIC 1
static const IOport IMR2; // interrupt mask register von PIC 2
public:
PIC(const PIC& copy) = delete; // Verhindere Kopieren
PIC() = default;
// Can't make static because atexit
// IRQ-Nummern von Geraeten
enum {
timer = 0, // Programmable Interrupt Timer (PIT)
keyboard = 1, // Tastatur
com1 = 4
};
// Freischalten der Weiterleitung eines IRQs durch den PIC an die CPU
static void allow(int irq);
// Unterdruecken der Weiterleitung eines IRQs durch den PIC an die CPU
static void forbid(int irq);
// Abfragen, ob die Weiterleitung fuer einen bestimmten IRQ unterdrueckt ist
static bool status(int interrupt_device);
};
#endif