• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • English
  • Campo
  • StudOn
  • FAUdir
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
Menu Menu schließen
  • Lehrstuhl
    • Team
    • Aktuelles
    • Kontakt und Anfahrt
    • Leitbild
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Confidential Computing
      • Embedded Systems Software
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Wintersemester 2025/26
      • Systemprogrammierung 2
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
      • Projekt angewandte Systemsoftwaretechnik
      • Aktuelle Entwicklung in Verteilten und Objektorientierten Betriebssystemen (für Bachelor-/Masterarbeit)
    • Sommersemester 2026
      • Applied Software Architecture
      • Betriebssystemsicherheit
      • Betriebssystemtechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verlässliche Echtzeitsysteme
      • Verteilte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssystemtechnik
    • Vorlesung
      • Folien
      • Glossar
    • Übung
      • Aufgaben
      • Dokumentation
        • Blog
          • Entwicklungsumgebung
            • Assembler Crashkurs
              • C++ Crashkurs
                • 🔗 Testrechnerverwaltung
                • Kontakt
              • Evaluation

              Dokumentation

              Functions | Constants
              main.cc File Reference
              #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"
              + Include dependency graph for main.cc:

              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" "mI"
               

              Function Documentation

              int main ( )

              Kernels main function.

              Called after initialization of the system by kernel_init()

              Note
              This code will only be executed on the booting CPU (i.e., the one with ID 0).
              int main_ap ( )

              Entry point for application processors.

              Called after initialization of the system by kernel_init()

              Note
              Code in this function will be executed on all APs (i.e., all CPUs except ID 0)

              Variable Documentation

              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:

              TextStream dout[Core::MAX]{
              {0, 40, 17, 21}, // Debug window for core 0, like TextStream(0, 40, 17, 21)
              {40, 80, 17, 21}, // Debug window for core 1, like TextStream(40, 80, 17, 21)
              //...
              };
              TextStream
              Output text (form different data type sources) on screen in text mode.
              Definition textstream.h:23
              Core::MAX
              const unsigned MAX
              Maximum number of supported CPUs.
              Definition core.h:28
              dout
              TextStream dout[Core::MAX]
              Debug window.
              Definition main.cc:7

              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.

              Optional:
              Automatically arrange windows with TextStream::arrange()
              Mouse mouse(720, 400) ( 720  ,
              400   
              )
              Watch watch
              Clock clock
              Ticker ticker
              Assassin assassin
              static
              GuardedKeyboard keyboard
              WakeUp wakeup
              static
              GuardedSemaphore koutsem(1) ( 1  )
              const uint32_t NUM_APPS = 9
              static
              Application apps[NUM_APPS]
              static
              KeyboardApplication kapp
              static
              const char* os_name = "MP" "StuBS" "mI"
              Friedrich-Alexander-Universität
              Erlangen-Nürnberg

              Schlossplatz 4
              91054 Erlangen
              • Impressum
              • Datenschutz
              • Barrierefreiheit
              • Facebook
              • RSS Feed
              • Xing
              Nach oben