• 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
  • Betriebssystemtechnik
    • Vorlesung
      • Folien
      • Glossar
    • Übung
      • Aufgaben
      • Dokumentation
        • Blog
          • Entwicklungsumgebung
            • Assembler Crashkurs
              • C++ Crashkurs
                • 🔗 Testrechnerverwaltung
                • Kontakt
              • Evaluation

              Dokumentation

              • 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