• 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
                • Aufgabe 5: Zeitscheiben
                  • Aufgabe 6: Synchronisation
                    • Assembler Crashkurs
                      • C++ Crashkurs
                        • Entwicklungsumgebung
                          • FAQ
                            • Ruhmeshalle

                          Aufgabe 5: Zeitscheiben

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

                          Inter-Processor Interrupts. More...

                          Classes

                          struct  InterruptCommand.__unnamed62__
                           I/O redirection-table entry. More...
                           

                          Enumerations

                          enum  DeliveryMode {
                            FIXED = 0 ,
                            LOWEST_PRIORITY = 1 ,
                            SMI = 2 ,
                            NMI = 4 ,
                            INIT = 5 ,
                            INIT_LEVEL_DEASSERT = 5 ,
                            STARTUP = 6
                          }
                           Delivery mode specifies the type of interrupt sent to the CPU. More...
                           
                          enum  DestinationMode {
                            PHYSICAL = 0 ,
                            LOGICAL = 1
                          }
                           Way of interpreting the value written to the destination field. More...
                           
                          enum  DeliveryStatus {
                            IDLE = 0 ,
                            SEND_PENDING = 1
                          }
                           Interrupt state. More...
                           
                          enum  Level {
                            DEASSERT = 0 ,
                            ASSERT = 1
                          }
                           Interrupt level. More...
                           
                          enum  TriggerMode {
                            EDGE_TRIGGERED = 0 ,
                            LEVEL_TRIGGERED = 1
                          }
                           Trigger mode for DeliveryMode::INIT_LEVEL_DEASSERT. More...
                           
                          enum  DestinationShorthand {
                            NO_SHORTHAND = 0 ,
                            SELF = 1 ,
                            ALL_INCLUDING_SELF = 2 ,
                            ALL_EXCLUDING_SELF = 3
                          }
                           Shorthand for commonly used destinations. More...
                           
                          enum  InterruptMask {
                            UNMASKED = 0 ,
                            MASKED = 1
                          }
                           Interrupt mask. More...
                           

                          Functions

                          bool isDelivered ()
                           Check if the previously sent IPI has reached its destination. More...
                           
                          void send (uint8_t destination, uint8_t vector)
                           Send an Inter-Processor Interrupt (IPI) More...
                           
                          void sendGroup (uint8_t logical_destination, uint8_t vector)
                           Send an Inter-Processor Interrupt (IPI) to a group of processors. More...
                           
                          void sendAll (uint8_t vector)
                           Send an Inter-Processor Interrupt (IPI) to all processors (including self) More...
                           
                          void sendOthers (uint8_t vector)
                           Send an Inter-Processor Interrupt (IPI) to all other processors (all but self) More...
                           
                          void sendInit (bool assert=true)
                           Send an INIT request IPI to all other processors. More...
                           
                          void sendStartup (uint8_t vector)
                           Send an Startup IPI to all other processors. More...
                           

                          Detailed Description

                          Inter-Processor Interrupts.

                          For multi-core systems, the LAPIC enables sending messages (Inter-Processor Interrupts, IPIs) to other CPU cores and receiving those sent from other cores.

                          See also
                          ISDMv3 10.6 Issuing Interprocessor Interrupts

                          Class Documentation

                          struct LAPIC::IPI::InterruptCommand.__unnamed62__

                          I/O redirection-table entry.

                          Every entry in the redirection table represents an external source of interrupts and has a size of 64 bits. Due to the I/O APIC registers being only 32 bits wide, the 64-bit value is split in two 32 bit values.

                          Class Members
                          Register value_low First, low-order register.
                          Register value_high Second, high-order register.

                          Enumeration Type Documentation

                          enum LAPIC::IPI::DeliveryMode

                          Delivery mode specifies the type of interrupt sent to the CPU.

                          Enumerator
                          FIXED 

                          "ordinary" interrupt; send to ALL cores listed in the destination bit mask

                          LOWEST_PRIORITY 

                          "ordinary" interrupt; send to the lowest priority core from destination mask

                          SMI 

                          System Management Interrupt; vector number required to be 0.

                          NMI 

                          Non-Maskable Interrupt, vector number ignored, only edge triggered.

                          INIT 

                          Initialization interrupt (always treated as edge triggered)

                          INIT_LEVEL_DEASSERT 

                          Synchronization interrupt.

                          STARTUP 

                          Dedicated Startup-Interrupt (SIPI)

                          enum LAPIC::IPI::DestinationMode

                          Way of interpreting the value written to the destination field.

                          Enumerator
                          PHYSICAL 

                          Destination contains the physical destination APIC ID.

                          LOGICAL 

                          Destination contains a mask of logical APIC IDs.

                          enum LAPIC::IPI::DeliveryStatus

                          Interrupt state.

                          Enumerator
                          IDLE 

                          No activity for this interrupt.

                          SEND_PENDING 

                          Interrupt will be sent as soon as the bus / LAPIC is ready.

                          enum LAPIC::IPI::Level

                          Interrupt level.

                          Enumerator
                          DEASSERT 

                          Must be zero when DeliveryMode::INIT_LEVEL_DEASSERT.

                          ASSERT 

                          Must be one for all other delivery modes.

                          enum LAPIC::IPI::TriggerMode

                          Trigger mode for DeliveryMode::INIT_LEVEL_DEASSERT.

                          Enumerator
                          EDGE_TRIGGERED 

                          edge triggered

                          LEVEL_TRIGGERED 

                          level triggered

                          enum LAPIC::IPI::DestinationShorthand

                          Shorthand for commonly used destinations.

                          Enumerator
                          NO_SHORTHAND 

                          Use destination field instead of shorthand.

                          SELF 

                          Send IPI to self.

                          ALL_INCLUDING_SELF 

                          Send IPI to all including self.

                          ALL_EXCLUDING_SELF 

                          Send IPI to all except self.

                          enum LAPIC::IPI::InterruptMask

                          Interrupt mask.

                          Enumerator
                          UNMASKED 

                          Interrupt entry is active (non-masked)

                          MASKED 

                          Interrupt entry is deactivated (masked)

                          Function Documentation

                          bool LAPIC::IPI::isDelivered ( )

                          Check if the previously sent IPI has reached its destination.

                          Returns
                          true if the previous IPI was accepted from its target processor, otherwise false
                          void LAPIC::IPI::send ( uint8_t  destination,
                          uint8_t  vector 
                          )

                          Send an Inter-Processor Interrupt (IPI)

                          Parameters
                          destinationID of the target processor (use APIC::getLAPICID(core) )
                          vectorInterrupt vector number to be triggered
                          void LAPIC::IPI::sendGroup ( uint8_t  logical_destination,
                          uint8_t  vector 
                          )

                          Send an Inter-Processor Interrupt (IPI) to a group of processors.

                          Parameters
                          logical_destinationMask containing the logical APIC IDs of the target processors (use APIC::getLogicalLAPICID())
                          vectorInterrupt vector number to be triggered
                          void LAPIC::IPI::sendAll ( uint8_t  vector)

                          Send an Inter-Processor Interrupt (IPI) to all processors (including self)

                          Parameters
                          vectorInterrupt vector number to be triggered
                          void LAPIC::IPI::sendOthers ( uint8_t  vector)

                          Send an Inter-Processor Interrupt (IPI) to all other processors (all but self)

                          Parameters
                          vectorInterrupt vector number to be triggered
                          void LAPIC::IPI::sendInit ( bool  assert = true)

                          Send an INIT request IPI to all other processors.

                          Note
                          Only required for startup
                          Parameters
                          assertif true send an INIT, on false send an INIT Level De-assert
                          void LAPIC::IPI::sendStartup ( uint8_t  vector)

                          Send an Startup IPI to all other processors.

                          Note
                          Only required for startup
                          Parameters
                          vectorPointer to a startup routine
                          Friedrich-Alexander-Universität
                          Erlangen-Nürnberg

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