StuBS
|
#include "boot/startup_ap.h"
#include "machine/lapic.h"
#include "debug/output.h"
#include "device/textstream.h"
#include "machine/ioapic.h"
#include "machine/core.h"
#include "device/mouse.h"
#include "debug/gdb/stub.h"
#include "interrupt/guard.h"
#include "thread/scheduler.h"
#include "thread/thread.h"
#include "device/watch.h"
#include "machine/hpet.h"
#include "device/clock.h"
#include "device/ticker.h"
#include "thread/assassin.h"
#include "syscall/guarded_keyboard.h"
#include "thread/wakeup.h"
#include "syscall/guarded_semaphore.h"
#include "user/app1/appl.h"
#include "user/app2/kappl.h"
Functions | |
int | main () |
Kernels main function. | |
int | main_ap () |
Entry point for application processors. | |
Constants | |
TextStream | kout |
TextStream | dout [Core::MAX] |
Debug window. | |
Mouse | mouse (720, 400) |
Watch | watch |
Clock | clock |
Ticker | ticker |
static Assassin | assassin |
GuardedKeyboard | keyboard |
static WakeUp | wakeup |
GuardedSemaphore | koutsem (1) |
static const uint32_t | NUM_APPS = 9 |
static Application | apps [NUM_APPS] |
static KeyboardApplication | kapp |
const char * | os_name = "MP" "StuBS" |
int main | ( | ) |
Kernels main function.
Called after initialization of the system by kernel_init()
int main_ap | ( | ) |
Entry point for application processors.
Called after initialization of the system by kernel_init()
TextStream kout |
TextStream dout[Core::MAX] |
Debug window.
Debug output using DBG like DBG << "var = " << var << endl
should be displayed in window dedicated to the core it is executed on.
While this is quite easy on single core systems like OOStuBS – they only require a single TextStream object called dout
– multi core systems like MPStuBS need an object array with one window per core. In the latter case direct list initialization can be used:
The debug windows in should be located right below the normal output window without any overlap and should be able to display at least 3 lines. In MPStuBS, two windows can be placed side-by-side, having 40 columns each.
As an optional extension, the distribution of the windows can be done automatically in MPStuBS (according to the actual numbers of cores) with TextStream::arrange() – in this case the standard constructor (without parameters) is sufficient.
Mouse mouse(720, 400) | ( | 720 | , |
400 | |||
) |
Watch watch |
Clock clock |
Ticker ticker |
|
static |
GuardedKeyboard keyboard |
|
static |
GuardedSemaphore koutsem(1) | ( | 1 | ) |
|
static |
|
static |
|
static |
const char* os_name = "MP" "StuBS" |