• 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

                              C++ Crashkurs

                              • GDT
                              • SegmentDescriptor
                              Public Member Functions | Public Attributes | List of all members
                              GDT::SegmentDescriptor Union Reference

                              Describes the structure of segment descriptors. More...

                              #include <machine/gdt.h>

                              Public Member Functions

                              constexpr SegmentDescriptor (uint64_t val=0)
                               !< Merged value; useful for debugging More...
                               
                              constexpr SegmentDescriptor (uintptr_t base, uint32_t limit, bool code, int ring, Size size)
                               Constructor for a code/data GDT entry. More...
                               

                              Public Attributes

                              struct {
                              uint64_t limit_low: 16
                               Least-significant bits of segment size (influenced by granularity!)
                               
                              uint64_t base_low: 24
                               Least-significant bits of base address.
                               
                              uint64_t type: 4
                               Meaning of those 4 bits depends on descriptor_type below.
                               
                              DescriptorType descriptor_type: 1
                               Descriptor type (influences the meaning of the 3 bits above)
                               
                              uint64_t privilege_level: 2
                               Ring for this segment.
                               
                              bool present: 1
                               Entry is valid iff set to true
                               
                              uint64_t limit_high: 4
                               Most-significant bits of segment size.
                               
                              bool available: 1
                               Bit which can be used for other purposes (in software)
                               
                              uint64_t custom: 2
                               Meaning of those 2 bits relate to descriptor_type and type.
                               
                              Granularity granularity: 1
                               Unit used as granularity for the segment limit.
                               
                              uint64_t base_high: 8
                               most-significant bits of base address
                               
                              }; 
                               
                              struct {
                              uint64_t __pad0__: 40
                               Ignored (set via limit_low and base_low )
                               
                              bool code_accessed: 1
                               If set, the code segment was used since the last reset of this value.
                               
                              bool readable: 1
                               If set, the code is readable (otherwise only executable)
                               
                              bool conforming: 1
                               If set, the execution of code from this segment is only allowed when running at a privilege of numerically less than or equal to privilege_level (i.e. the executor has the same or higher privileges). However, the executor's privileges remain unchanged. For nonconforming code segments (i.e., conforming is set to 0), execution is allowed only if the privileges are equal. Execution will cause a GPF in case of privilege violation.
                               
                              bool code: 1
                               Has to be set to true
                               
                              uint64_t __pad1__: 9
                               Ignored (set via privilege_level ... available)
                               
                              Size operation_size: 2
                               Default address width (custom field bit)
                               
                              uint64_t __pad2__: 0
                               Remainder ignored (set via base_high)
                               
                              }; 
                               Fields specific for Code Segment (for debugging purposes) More...
                               
                              struct {
                              uint64_t __pad0__: 40
                               Ignored (set via limit_low and base_low)
                               
                              bool data_accessed: 1
                               If set, the data segment was used since the last reset of this value.
                               
                              bool writeable: 1
                               If set, data is writable (otherwise read only)
                               
                              bool expand_down: 1
                               Growing direction for dynamically growing segments.
                               
                              bool notData: 1
                               Has to be cleared (false)
                               
                              uint64_t __pad1__: 9
                               Ignored (set via privilege_level ... available)
                               
                              uint64_t reserved: 1
                               Reserved, always set to 0!
                               
                              bool big: 1
                               Size of the stack pointer (false = 16 bit, true = 32 bit) More...
                               
                              uint64_t __pad2__: 0
                               Remainder ignored.
                               
                              }; 
                               Fields specific for Data Segment (for debugging purposes) More...
                               
                              uint64_t value
                               

                              Detailed Description

                              Describes the structure of segment descriptors.

                              A data structure that contains size, position, access rights, and purpose of any segment. Segment descriptors are used in both the GDT, as well as in LDTs.

                              See also
                              ISDMv3, 3.4.5; Segment Descriptors
                              AAPMv2, 4.7 Legacy Segment Descriptors
                              AAPMv2, 4.8 Long-Mode Segment Descriptors

                              Constructor & Destructor Documentation

                              constexpr GDT::SegmentDescriptor::SegmentDescriptor ( uint64_t  val = 0)
                              inlineconstexpr

                              !< Merged value; useful for debugging

                              Constructor for a specific value

                              constexpr GDT::SegmentDescriptor::SegmentDescriptor ( uintptr_t  base,
                              uint32_t  limit,
                              bool  code,
                              int  ring,
                              Size  size 
                              )
                              inlineconstexpr

                              Constructor for a code/data GDT entry.

                              Parameters
                              baseBase Address of segment
                              limitSize of segment
                              codeCode or data segment
                              ringPrivilege level
                              sizeAddress width

                              Member Data Documentation

                              struct { ... }

                              Fields specific for Code Segment (for debugging purposes)

                              See also
                              ISDMv3, 3.4.5.1; Code- and Data-Segment Descriptor Types
                              struct { ... }

                              Fields specific for Data Segment (for debugging purposes)

                              See also
                              ISDMv3, 3.4.5.1; Code- and Data-Segment Descriptor Types

                              The documentation for this union was generated from the following file:
                              • machine/gdt.h
                              Friedrich-Alexander-Universität
                              Erlangen-Nürnberg

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