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] |