Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
handler.h-Dateireferenz

Enthält die Low-Level Unterbrechungsbehandlung für den Debugger. Mehr ...

#include "types.h"
#include "debug/assert.h"
Include-Abhängigkeitsdiagramm für handler.h:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

Klassen

struct  debug_context
 Gesicherter Debug-Unterbrechungskontext (wie er auf dem Stack liegt) Mehr ...
 

Funktionen

 assert_size (debug_context, 24 *8)
 
void debug_handler (struct debug_context *context)
 Low-Level Debug-Interrupt-Behandlung. Mehr ...
 

Ausführliche Beschreibung

Enthält die Low-Level Unterbrechungsbehandlung für den Debugger.

Dokumentation der Funktionen

◆ debug_handler()

void debug_handler ( struct debug_context context)

Low-Level Debug-Interrupt-Behandlung.

Erlaube der generischen Unterbrechungsbehandlung Zugriff auf die geschützten Methoden dieser Klasse.

Debug-Unterbrechungsbehandlungsroutine des Systems, analog zu guardian . Aufruf dieser Funktion durch den Assembler Teil der Debug- Unterbrechungsbehandlung (dbg_irq_entry_* in der debug/gbd/handler.asm) – diese Routinen müssen zuvor mittels GDB_Stub::install_handler installiert werden. Nach dem vorbereiten der Daten wird GDB_Stub::handle aufgerufen, welches mit dem Host über die serielle Schnittstelle kommuniziert.

Zu beachten
Für korrekte Funktionalität im Multiprozessorfall wird eine korrekte Implementierung der Klasse Ticketlock vorausgesetzt!
Parameter
contextbeinhaltet einen Pointer auf den eigenen Stack, über den auf den Debug-Unterbrechungskontext zugegriffen werden kann.

Da wir nur einen internen Zustandsspeicher haben, kann dies im Mehrkern- betrieb schnell böse enden, wenn mehrere Kerne gleichzeitig schreibend darauf zugreifen wollen. Deshalb exklusiver Ausschluss!

Selbstverständlich sollte man bei der Kombination 'aktives Warten' und 'Unterbrechungsbehandlung' sofort üble Bauchschmerzen bekommen. Als Ausrede dient hier, dass es für den Debugger ist, welcher zum einen so einfach wie möglich sein sollte, zum anderen auch nicht im produktiven Betrieb verwendet werden sollte.

Also bitte nur als 'simple Hack' und nicht als 'best practice' im Hinterkopf behalten.

Da wir nur einen internen Zustandsspeicher haben, kann dies im Mehrkern- betrieb schnell böse enden, wenn mehrere Kerne gleichzeitig schreibend darauf zugreifen wollen. Deshalb exklusiver Ausschluss!

Selbstverständlich sollte man bei der Kombination 'aktives Warten' und 'Unterbrechungsbehandlung' sofort üble Bauchschmerzen bekommen. Als Ausrede dient hier, dass es für den Debugger ist, welcher zum einen so einfach wie möglich sein sollte, zum anderen auch nicht im produktiven Betrieb verwendet werden sollte.

Also bitte nur als 'simple Hack' und nicht als 'best practice' im Hinterkopf behalten.