1
Files
lecture-operating-system-de…/c_os/kernel/interrupts/IntDispatcher.h
2022-07-15 01:28:18 +02:00

44 lines
1.6 KiB
C++
Executable File

/*****************************************************************************
* *
* I N T D I S P A T C H E R *
* *
*---------------------------------------------------------------------------*
* Beschreibung: Zentrale Unterbrechungsbehandlungsroutine des Systems. *
* Der Parameter gibt die Nummer des aufgetretenen *
* Interrupts an. Wenn eine Interrupt Service Routine (ISR) *
* in der Map registriert ist, so wird diese aufgerufen. *
* *
* Autor: Michael Schoettner, 30.7.16 *
*****************************************************************************/
#ifndef __IntDispatcher_include__
#define __IntDispatcher_include__
#include "kernel/interrupts/ISR.h"
class IntDispatcher {
private:
IntDispatcher(const IntDispatcher& copy) = delete; // Verhindere Kopieren
enum { size = 256 };
ISR* map[size];
public:
// Vektor-Nummern
enum {
timer = 32,
keyboard = 33
};
// Initialisierung der ISR map mit einer Default-ISR.
IntDispatcher();
// Registrierung einer ISR. (Rueckgabewert: 0 = Erfolg, -1 = Fehler)
int assign(unsigned int vector, ISR& isr);
// ISR fuer 'vector' ausfuehren
int report(unsigned int vector);
};
#endif