
EnthĂ€lt mit den main() und main_ap() Funktionen den Startpunkt fĂŒr das System. Mehr ...
#include "machine/apicsystem.h"
#include "machine/lapic.h"
#include "device/cga_stream.h"
#include "debug/output.h"
#include "user/app1/appl.h"
#include "user/app2/kappl.h"
#include "machine/ioapic.h"
#include "machine/cpu.h"
#include "machine/plugbox.h"
#include "debug/gdb/stub.h"
#include "syscall/guarded_keyboard.h"
#include "guard/guard.h"
#include "thread/scheduler.h"
#include "thread/thread.h"
#include "device/watch.h"
#include "thread/assassin.h"
#include "meeting/bellringer.h"
#include "thread/idlethread.h"
#include "thread/wakeup.h"
#include "syscall/guarded_semaphore.h"
Funktionen | |
void | setupIdleThread (int cpuid) |
int | main () |
Einsprungpunkt ins System. Mehr ... | |
int | main_ap () |
Einsprungpunkt fĂŒr Applikationsprozessoren. Mehr ... | |
Variablen | |
CGA_Stream | kout |
CGA_Stream | dout [CPU_MAX] |
Debugausgabefenster fĂŒr die jede Zeigt Ausgaben zur Fehlersuche wie DBG << "var = " << var << endl in einem separaten Debugfenster fĂŒr die entsprechende CPU an. Mehr ... | |
Guarded_Keyboard | keyboard |
Watch | watch |
Assassin | assassin |
Bellringer | bellringer |
WakeUp | wakeup |
const unsigned long | IDLE_STACK_SIZE = 4096 |
IdleThread | idle_thread [CPU_MAX] |
Guarded_Semaphore | koutsem (1) |
int main | ( | ) |
Einsprungpunkt ins System.
Dieser Code wird nur auf der Boot-CPU (diejenige mit der ID 0) ausgefĂŒhrt.
int main_ap | ( | ) |
Einsprungpunkt fĂŒr Applikationsprozessoren.
Code in dieser Funktion wird auf allen Applikationsprozessoren ausgefĂŒhrt (entspricht allen CPUs auĂer derjenigen mit der ID 0).
CGA_Stream dout[CPU_MAX] |
Debugausgabefenster fĂŒr die jede 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 Objektarray mit einem Fenster je CPU notwendig – in diesem Fall kann die direkte Listeninitialisierung verwendet werden:
Die Debugfenster sollen ĂŒberschneidungsfrei unterhalb des normalen Ausgabefensters liegen und mindestens 3 Zeilen lang sein. Zwei Debugfenster können problemlos nebeneinander liegen.
IdleThread idle_thread[CPU_MAX] |