• 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 6: Synchronisation

                          • interrupt
                          Classes | Functions | Constants
                          handler.h File Reference

                          interrupt_handler() Interrupt handler More...

                          #include "types.h"
                          #include "machine/core_interrupt.h"
                          + Include dependency graph for handler.h:

                          Classes

                          struct  InterruptContext
                           Preserved interrupt context. More...
                           

                          Functions

                          void interrupt_handler (Core::Interrupt::Vector vector, InterruptContext *context)
                           High-Level Interrupt Handling. More...
                           

                          Constants

                          void *const interrupt_entry []
                           Array of function pointer to the default low-level interrupt handlers. More...
                           

                          Detailed Description

                          interrupt_handler() Interrupt handler


                          Class Documentation

                          struct InterruptContext

                          Preserved interrupt context.

                          After an interrupt was triggered, the core first saves the basic context (current code- & stack segment, instruction & stack pointer and the status flags register) and looks up the handling function for the vector using the IDT. In StuBS for each vector an own interrupt_entry_VECTOR function (written in assembly in interrupt/handler.asm) was registered during boot by kernel_init(), which all save the scratch registers on the stack before calling the C++ function interrupt_handler(). The high-level handler gets a pointer to the part of the stack which corresponds to the InterruptContext structure as second parameter. After returning from the high-level handler, the previous state is restored from this context (scratch register in assembly and basic context while executing iret) so it can continue transparently at the previous position.

                          Class Members
                          uintptr_t r11 scratch register R11
                          uintptr_t r10 scratch register R10
                          uintptr_t r9 scratch register R9
                          uintptr_t r8 scratch register R8
                          uintptr_t rdi scratch register RDI
                          uintptr_t rsi scratch register RSI
                          uintptr_t rdx scratch register RDX
                          uintptr_t rcx scratch register RCX
                          uintptr_t rax scratch register RAX
                          uintptr_t error_code Error Code.
                          uintptr_t ip Instruction Pointer (at interrupt)
                          uintptr_t cs: 16 Code segment (in case of a ring switch it is the segment of the user mode)
                          uintptr_t __pad0__: 0 Alignment (due to 16 bit code segment)
                          uintptr_t flags Status flags register.
                          uintptr_t sp Stack pointer (at interrupt)
                          uintptr_t ss: 16 Stack segment (in case of a ring switch it is the segment of the user mode)
                          uintptr_t __pad1__: 0 Alignment (due to 16 bit stack segment)

                          Variable Documentation

                          void* const interrupt_entry[]

                          Array of function pointer to the default low-level interrupt handlers.

                          The index corresponds to the vectors entry function, e.g. interrupt_entry[6] points to interrupt_entry_6, handling the trap for invalid opcode.

                          The entry functions and this array are defined in assembly in interrupt/handler.asm and used in kernel_init() to initialize the Interrupt Descriptor Table (IDT).

                          Friedrich-Alexander-Universität
                          Erlangen-Nürnberg

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