• 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
    • 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 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)
    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
                • Assembler Crashkurs
                  • C++ Crashkurs
                    • Entwicklungsumgebung
                      • FAQ
                        • Ruhmeshalle

                      Aufgabe 2: Unterbrechungen

                      • LAPIC
                      • Timer
                      Classes | Enumerations | Functions
                      LAPIC::Timer Namespace Reference
                      Interrupt Handling

                      Local Timer (for each LAPIC / CPU) More...

                      Classes

                      struct  ControlRegister.__unnamed56__
                       

                      Enumerations

                      enum  DeliveryStatus {
                        IDLE = 0 ,
                        SEND_PENDING = 1
                      }
                       Timer Delivery Status.
                       
                      enum  TimerMode {
                        ONE_SHOT = 0 ,
                        PERIODIC = 1 ,
                        DEADLINE = 2
                      }
                       Timer Mode.
                       
                      enum  Mask {
                        NOT_MASKED = 0 ,
                        MASKED = 1
                      }
                       Timer Mask.
                       

                      Functions

                      uint32_t ticks (void)
                       Determines the LAPIC timer frequency. More...
                       
                      void set (uint32_t counter, uint8_t divide, uint8_t vector, bool periodic, bool masked=false)
                       Set the LAPIC timer. More...
                       
                      Register getClockDiv (uint8_t div)
                       Calculate the bit mask for the LAPIC-timer divider. More...
                       

                      Detailed Description

                      Local Timer (for each LAPIC / CPU)

                      See also
                      ISDMv3 10.5.4 APIC Timer

                      Class Documentation

                      struct LAPIC::Timer::ControlRegister.__unnamed56__
                      Class Members
                      uint32_t vector: 8 Vector.
                      uint32_t __pad0__: 4
                      DeliveryStatus delivery_status: 1 Delivery Status.
                      uint32_t __pad1__: 3
                      Mask masked: 1 Interrupt Mask (if set, interrupt will not trigger)
                      TimerMode timer_mode: 2 Timer Mode.
                      uint32_t __pad2__: 13

                      Function Documentation

                      uint32_t LAPIC::Timer::ticks ( void  )

                      Determines the LAPIC timer frequency.

                      This function will calculate the number of LAPIC-timer ticks passing in the course of one millisecond. To do so, this function will rely on PIT timer functionality and measure the tick delta between start and end of waiting for a predefined period.

                      For measurement, the LAPIC-timer single-shot mode (without interrupts) is used; after measurement, the timer is disabled again.

                      Note
                      The timer is counting towards zero.
                      Returns
                      Number of LAPIC-timer ticks per millisecond
                      void LAPIC::Timer::set ( uint32_t  counter,
                      uint8_t  divide,
                      uint8_t  vector,
                      bool  periodic,
                      bool  masked = false 
                      )

                      Set the LAPIC timer.

                      Parameters
                      counterInitial counter value; decremented on every LAPIC timer tick
                      divideDivider (power of 2, i.e., 1 2 4 8 16 32...) used as prescaler between bus frequency and LAPIC timer frequency: LAPIC timer frequency = divide * bus frequency. divide is a numerical parameter, the conversion to the corresponding bit mask is done internally by calling getClockDiv().
                      vectorInterrupt vector number to be triggered on counter expiry
                      periodicIf set, the interrupt will be issued periodically
                      maskedIf set, interrupts on counter expiry are suppressed
                      Register LAPIC::Timer::getClockDiv ( uint8_t  div)

                      Calculate the bit mask for the LAPIC-timer divider.

                      Parameters
                      divDivider, must be power of two: 1, 2, 4, 8, 16, 32, 64, 128
                      Returns
                      Bit mask for LAPIC::Timer::set() or 0xff if div is invalid.
                      Friedrich-Alexander-Universität
                      Erlangen-Nürnberg

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