• 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

              Public Member Functions | List of all members
              Keyboard Class Reference

              Handles keystrokes. More...

              #include <device/keyboard.h>

              + Inheritance diagram for Keyboard:
              [legend]
              + Collaboration diagram for Keyboard:
              [legend]

              Public Member Functions

               Keyboard ()
               Constructor.
               
              void plugin ()
               Initialization of the keyboard. More...
               
              bool prologue () override
               Prologue of keyboard interrupts. More...
               
              void epilogue () override
               Epilogue of keyboard interrupts. More...
               
              Key getKey ()
               Application interface to retrieve a Key. More...
               
              - Public Member Functions inherited from Gate
               Gate ()
               Constructor.
               
              virtual ~Gate ()
               Destructor. More...
               

              Detailed Description

              Handles keystrokes.

              This class ensures correct initialization of the keyboard and, above all, its interrupt handling. It also allows an application to query it for key strokes.

              Member Function Documentation

              void Keyboard::plugin ( )

              Initialization of the keyboard.

              Initialization of the keyboard and activation of the specific interrupt handling: The object will register itself at the Plugbox and configure the IOAPIC to receive the corresponding interrupts.

              Note
              The keyboard interrupts should be configured as level triggered. According to the standard we would have to check the corresponding entry in ACPI::MADS::Interrupt_Source_Override and use these values. Most likely this would suggest an edge-triggered mode – which would work as well. However, using a level-triggered mode is more forgiving because it resends the interrupt request even if an interrupt was lost (e.g. the required handling, retrieving the buffer entry, was not performed).
              bool Keyboard::prologue ( )
              overridevirtual

              Prologue of keyboard interrupts.

              This method directly handles interrupts caused by the keyboard. Since multiple interrupts are triggered on a keystroke (press & release) it produces not always a printable ASCII character – therefore only valid keys are handled in the Keyboard::epilogue.

              Since the buffer is limited, it also ensures that a valid key is not overwritten by a subsequent prologue before it was handled in the Keyboard::epilogue.

              Note
              If a keystroke would exceed the buffer, the new key is dropped – previous keystrokes have a higher priority in the buffer.
              Returns
              true if a new Key was stored in the buffer and has to be processed in the Keyboard::epilogue.

              Implements Gate.

              void Keyboard::epilogue ( )
              overridevirtual

              Epilogue of keyboard interrupts.

              The occurrence of a keystroke is signaled to a possibly waiting thread. For this purpose, a semaphore is used whose counter indicates how many keys are available in the keyboard buffer for retrieval.

              Reimplemented from Gate.

              Key Keyboard::getKey ( )

              Application interface to retrieve a Key.

              This method returns the last pressed key (as an Key object). If no key has been pressed, the calling application thread is blocked until a key is available – this is achieved by using a Semaphore.

              Returns
              Pressed key

              The documentation for this class was generated from the following files:
              • device/keyboard.h
              • device/keyboard.cc
              Friedrich-Alexander-Universität
              Erlangen-Nürnberg

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