Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
GDT::SegmentDescriptor Variantenreferenz

Beschreibt den Aufbau von Segment-Descriptoren. Mehr ...

#include <machine/gdt.h>

Öffentliche Methoden

constexpr SegmentDescriptor (uint64_t val=0)
 Konstruktor für einen konkret gegebenen Eintrag.
 
constexpr SegmentDescriptor (uintptr_t base, uint32_t limit, bool code, int ring, Mode mode)
 Konstruktor für einen 16/32 Bit Code/Memory Eintrag. Mehr ...
 

Öffentliche Attribute

struct {
   uint64_t   limit_low: 16
 Niederwertige 16 Bits der Segmentgröße – Wird beeinflusst von granularity!
 
   uint64_t   base_low: 24
 Niederwertige 24 Bits der Basisaddresse.
 
   uint64_t   type: 3
 
   enum Type   segment_type: 2
 Segmenttyp (beeinflusst die Bedeutung der beiden vorherigen Bits)
 
   uint64_t   privilege_level: 2
 Ring des Segments.
 
   bool   present: 1
 Valider (vorhandener) Eintrag.
 
   uint64_t   limit_high: 4
 Höherwertige 4 Bits der Segmentgröße.
 
   bool   available: 1
 Bit zur freien Verwendung.
 
   uint64_t   custom: 2
 
   Granularity   granularity: 1
 Setzt die Einheit, mit der der angegebene Wert für das Segmentlimit interpretiert werden soll.
 
   uint64_t   base_high: 8
 Höherwertige 8 Bits der Basisaddresse.
 
}; 
 
struct {
   uint64_t   __pad0__: 40
 
   bool   code_accessed:1
 Wenn gesetzt, dann wurde das Codesegment seit dem letzten löschen des Bits mindestens einmal betreten.
 
   bool   readable: 1
 Wenn gesetzt ist der Code lesbar (sonst nur ausführbar)
 
   bool   conforming: 1
 Wenn gesetzt, wird die Ausführung eines Codes im höher priveligierten Segment unter Beibehaltung des Rings erlaubt. Ansonst gibt es eine General-Protection-Ausnahme.
 
   uint64_t   __pad1__: 10
 
   bool   is64bit: 1
 64bit Code segement Mehr ...
 
   Size   operation_size: 1
 Standardbreite für Adressen.
 
   uint64_t   __pad2__: 0
 
}; 
 Code Segment spezifische Felder. Mehr ...
 
struct {
   uint64_t   __pad0__: 40
 
   bool   data_accessed: 1
 Wenn gesetzt, dann wurde das Datensegment seit dem letzten löschen des Bits mindestens einmal betreten.
 
   bool   writeable: 1
 Wenn gesetzt sind die Daten schreibbar (sonst nur lesbar)
 
   bool   expand_down: 1
 Richtung: nach unten wachsend Relevant für dynamisch änderbare, wachsende Segmente.
 
   uint64_t   __pad1__: 10
 
   uint64_t   reserved: 1
 Reserviert – soll gelöscht sein!
 
   Size   big: 1
 Größe des Stackpointer. Mehr ...
 
   uint64_t   __pad2__: 0
 
}; 
 Daten Segment spezifische Felder. Mehr ...
 
struct {
   uint64_t   __pad0__: 40
 
}; 
 spezifische Felder für Systemsegment (Task State Segment) Mehr ...
 
uint64_t value
 zusammengesetzter Wert
 

Ausführliche Beschreibung

Beschreibt den Aufbau von Segment-Descriptoren.

Eine Datenstruktur, welche die Größe, die Position, die Zugriffsberechtigungen und Verwendung eines Segmentes enthält und in freier Wildbahn in der GDT oder auch in einer LDT aufzufinden ist.

Siehe auch
ISDMv3, 3.4.5; Segment Descriptors

Beschreibung der Konstruktoren und Destruktoren

◆ SegmentDescriptor()

constexpr GDT::SegmentDescriptor::SegmentDescriptor ( uintptr_t  base,
uint32_t  limit,
bool  code,
int  ring,
Mode  mode 
)
inline

Konstruktor für einen 16/32 Bit Code/Memory Eintrag.

Parameter
baseBasisaddresse
limitGröße
codeCode oder Datensegment
ringPrivilegienlevel
modeBetriebsmodus (Real/Protected/Long)

Dokumentation der Datenelemente

◆ @32

struct { ... }

Code Segment spezifische Felder.

Siehe auch
ISDMv3, 3.4.5.1; Code- and Data-Segment Descriptor Types

◆ @34

struct { ... }

Daten Segment spezifische Felder.

Siehe auch
ISDMv3, 3.4.5.1; Code- and Data-Segment Descriptor Types

◆ @36

struct { ... }

spezifische Felder für Systemsegment (Task State Segment)

Siehe auch
ISDMv3, 7.2.2; TSS Descriptor

◆ big

Size GDT::SegmentDescriptor::big

Größe des Stackpointer.

Warnung
Hat bei gesetztem expand_down eine andere Bedeutung

◆ is64bit

bool GDT::SegmentDescriptor::is64bit

64bit Code segement

Warnung
Falls gesetzt muss operation_size gelöscht sein.

Die Dokumentation für diese Variante wurde erzeugt aufgrund der Datei: