OOStuBS/MPStuBS
output.h-Dateireferenz

Enthält Debugmacros, um Debugausgaben auf einen eigenen Screen umzuleiten. Mehr ...

#include "debug/null_stream.h"
#include "device/cgastr.h"
#include "machine/apicsystem.h"
Include-Abhängigkeitsdiagramm für output.h:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

Makrodefinitionen

#define DBG_VERBOSE   nullstream
 Stream, welche nur im Verbose-Modus im Debugfenster angezeigt wird. Mehr ...
 
#define DBG
 Ausgabestrom, welcher in dem der CPU zugeordneten Debugfenster angezeigt wird. Mehr ...
 

Variablen

CGA_Stream dout_CPU0
 Debugausgabefenster für die CPU 0 Zeigt Ausgaben zur Fehlersuche wie DBG << "Var = " << var << endl in einem separaten Debugfenster für die entsprechende CPU an. Mehr ...
 
CGA_Stream dout_CPU1
 Debugausgabefenster für die CPU 1. Mehr ...
 
CGA_Stream dout_CPU2
 Debugausgabefenster für die CPU 2. Mehr ...
 
CGA_Stream dout_CPU3
 Debugausgabefenster für die CPU 3. Mehr ...
 

Ausführliche Beschreibung

Enthält Debugmacros, um Debugausgaben auf einen eigenen Screen umzuleiten.

Für den Uniprozessorfall reicht es ein CGA_Stream Objekt für Debugausgaben (dout) anzulegen.

Makro-Dokumentation

◆ DBG

#define DBG
Wert:
( \
[]()->CGA_Stream& { \
switch(system.getCPUID()){ \
case 0: return dout_CPU0; \
case 1: return dout_CPU1; \
case 2: return dout_CPU2; \
default: return dout_CPU3; \
} \
}() \
)

Ausgabestrom, welcher in dem der CPU zugeordneten Debugfenster angezeigt wird.

Zu beachten
In MPStuBS muss für jede CPU ein Objekt für Debugausgaben mit dem Namen dout_CPUx angelegt werden.

Während dies in OOStuBS nur ein Alias auf dout ist, ist der Fall für die Mehrprozessorvariante etwas komplexer:

Das Debugmacro wählt den Ausgabestream durch Aufruf der anonymen, im Makro selbst definierten Funktion aus. Dieser durchaus umständliche Weg (im Vergleich zu Inline Funktionen) ist notwendig, damit in den nachfolgend inkludierten Dateien selbst das Debug Makro verwendet werden kann

Warnung
Bei ungünstiger Einplanung ist es möglich, dass die Ausgabe auf der falschen (vorherigen) CPU geschieht.

◆ DBG_VERBOSE

#define DBG_VERBOSE   nullstream

Stream, welche nur im Verbose-Modus im Debugfenster angezeigt wird.

Zu beachten
Sofern eine serielle Konsole implementiert wurde, kann diese (durch Änderung des Makros) als Ausgabe verwendet werden - dadurch wird die ggf. sehr umfangreiche Ausgaben besser lesbar (Stichwort Scrollen)

Variablen-Dokumentation

◆ dout_CPU0

CGA_Stream dout_CPU0

Debugausgabefenster für die CPU 0 Zeigt Ausgaben zur Fehlersuche wie DBG << "Var = " << var << endl in einem separaten Debugfenster für die entsprechende CPU an.

Während für OOStuBS nur ein Objekt dout angelegt werden muss, ist bei MPStuBS ein Objekt je CPU mit dem Namen dout_CPUx notwendig

Dieses sollte im Idealfall überschneidungsfrei unterhalb des normalen Ausgabefensters liegen und mindestens 3 Zeilen lang sein. Zwei Debugfenster können problemlos nebeneinander liegen.

◆ dout_CPU1

CGA_Stream dout_CPU1

Debugausgabefenster für die CPU 1.

Siehe auch
dout_CPU0

◆ dout_CPU2

CGA_Stream dout_CPU2

Debugausgabefenster für die CPU 2.

Siehe auch
dout_CPU0

◆ dout_CPU3

CGA_Stream dout_CPU3

Debugausgabefenster für die CPU 3.

Siehe auch
dout_CPU0
dout_CPU3
CGA_Stream dout_CPU3
Debugausgabefenster für die CPU 3.
dout_CPU1
CGA_Stream dout_CPU1
Debugausgabefenster für die CPU 1.
dout_CPU0
CGA_Stream dout_CPU0
Debugausgabefenster für die CPU 0 Zeigt Ausgaben zur Fehlersuche wie DBG << "Var = " << var << endl i...
CGA_Stream
Darstellung verschiedener Datentypen auf dem Bildschirm.
Definition: cgastr.h:27
dout_CPU2
CGA_Stream dout_CPU2
Debugausgabefenster für die CPU 2.
APICSystem::getCPUID
int getCPUID()
Liefert die CPUID der aktuellen CPU.
Definition: apicsystem.cc:289