• 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
      • Eingebettete Systemsoftware
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Sommersemester 2025
      • Applied Software Architecture
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    • Wintersemester 2024/25
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssysteme
    • Vorlesung
      • Folien
    • Übung
      • Seminar
      • Aufgaben
      • Aufgabe 0: C++ Streams
        • Aufgabe 1: Ein-/Ausgabe
          • Aufgabe 2: Unterbrechungen
            • Aufgabe 3: Pro-/Epilog
              • Aufgabe 4: Kontextwechsel
                • Aufgabe 5: Zeitscheiben
                  • Aufgabe 6: Synchronisation
                    • Aufgabe 7: Anwendung
                      • Assembler Crashkurs
                        • C++ Crashkurs
                          • Entwicklungsumgebung
                            • FAQ
                              • Ruhmeshalle
                              • Evaluation

                              Aufgabe 7: Anwendung

                              Public Member Functions | Static Public Member Functions | List of all members
                              Watch Class Reference

                              The Watch device deals with timer interrupts. More...

                              #include <device/watch.h>

                              + Inheritance diagram for Watch:
                              [legend]
                              + Collaboration diagram for Watch:
                              [legend]

                              Public Member Functions

                              bool windup (uint32_t us)
                               Windup / initialize. More...
                               
                              bool prologue () override
                               Prologue of timer interrupts. More...
                               
                              void epilogue () override
                               Epilogue of timer interrupts. More...
                               
                              uint32_t interval () const
                               Retrieve the interrupt interval. More...
                               
                              void activate () const
                               Activate the timer on this core. More...
                               
                              - Public Member Functions inherited from Gate
                               Gate ()
                               Constructor.
                               
                              virtual ~Gate ()
                               Destructor. More...
                               

                              Static Public Member Functions

                              static void block ()
                               Blocks the timer interrupts on this core. More...
                               
                              static void unblock ()
                               Allow the previously blocked timer interrupts on this core. More...
                               

                              Detailed Description

                              The Watch device deals with timer interrupts.

                              Handles LAPIC::Timer interrupts, therefore managing the time slices and triggering a thread switch if necessary.

                              Member Function Documentation

                              bool Watch::windup ( uint32_t  us)

                              Windup / initialize.

                              Assigns itself to the Plugbox and initializes the LAPIC::Timer in such a way that regular interrupts are triggered approx. every us microseconds when Watch::activate() is called. For this purpose, a suitable timer divisor is determined based on the timer frequency determined with LAPIC::Timer::ticks(). This timer divisor has to be as small as possible, but large enough to prevent the 32bit counter from overflowing.

                              Parameters
                              usDesired interrupt interval in microseconds.
                              Returns
                              Indicates if the interval could be set.
                              bool Watch::prologue ( )
                              overridevirtual

                              Prologue of timer interrupts.

                              Returns
                              true if the Watch::epilogue should be executed.

                              Implements Gate.

                              void Watch::epilogue ( )
                              overridevirtual

                              Epilogue of timer interrupts.

                              Triggers the thread switch and checks the Bellringer.

                              Todo:
                              Extend method (add Graphics)

                              Reimplemented from Gate.

                              uint32_t Watch::interval ( ) const

                              Retrieve the interrupt interval.

                              Returns
                              Interval in microseconds
                              void Watch::activate ( ) const

                              Activate the timer on this core.

                              The core local timer starts with the interval previously configured in windup(). To get timer interrupts on all cores, this method must be called once per core (however, it is sufficient to call windup only once since the APIC-Bus frequency is the same on each core).

                              void Watch::block ( )
                              static

                              Blocks the timer interrupts on this core.

                              The LAPIC Timer can be masked with LAPIC::Timer::setMasked as soon as no thread is ready and no Bell is waiting to be counted down. block() and unblock() must be called from the idle loop.

                              void Watch::unblock ( )
                              static

                              Allow the previously blocked timer interrupts on this core.

                              Logical counterpart to Watch::block(). Allows the delivery of core local timer interrupts again.


                              The documentation for this class was generated from the following files:
                              • device/watch.h
                              • device/watch.cc
                              Friedrich-Alexander-Universität
                              Erlangen-Nürnberg

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