/***************************************************************************** * * * 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 * * registriert ist, wird diese aufgerufen. * * * * Autor: Michael Schoettner, 31.8.2016 * *****************************************************************************/ #include "kernel/CPU.h" #include "kernel/Globals.h" #include "kernel/interrupts/IntDispatcher.h" extern "C" void int_disp (unsigned int slot); /***************************************************************************** * Prozedur: int_disp * *---------------------------------------------------------------------------* * Beschreibung: Low-Level Interrupt-Behandlung. * * Diese Funktion ist in der IDT fuer alle Eintraege einge- * * tragen. Dies geschieht bereits im Bootloader. * * Sie wird also fuer alle Interrupts aufgerufen. Von hier * * aus sollen die passenden ISR-Routinen der Treiber-Objekte* * mithilfe von 'IntDispatcher::report' aufgerufen werden. * * Parameter: * * vector: Vektor-Nummer der Unterbrechung * *****************************************************************************/ void int_disp (unsigned int vector) { /* hier muss Code eingefuegt werden */ kout << "Ein Interrupt ist aufgetreten" << slot << endl; } /***************************************************************************** * Konstruktor: IntDispatcher::IntDispatcher * *---------------------------------------------------------------------------* * Beschreibung: Initialisierung der ISR map mit einer Default-ISR. * *****************************************************************************/ IntDispatcher::IntDispatcher () { for (unsigned int slot=0; slot