• 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 2: Unterbrechungen

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

                              Inter-Processor Interrupts. More...

                              Classes

                              struct  InterruptCommand.__unnamed54__
                               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.__unnamed54__

                              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