Frage

Ich habe versucht, eine Struktur / union in der Linux-Quellcode zu suchen um die deaktiviert zu dem PTE auf x86-System mit PAE entsprechen würde. Bisher habe ich nur die in Bogen folgend gefunden / x86 / include / asm / page_32.h

typedef union {
        pteval_t pte;
        pteval_t pte_low;
} pte_t;

Ich bin ein wenig verwirrt jetzt, da ich vor dem Intel-Referenzhandbuch Vol 3A von mir und nichts in dieser Vereinigung geöffnet haben entspricht das Dutzend ungeradeen Felder in der PTE als das Handbuch erläutert.

Dies könnte eine triviale Frage, aber für mich hat sich in den Linux-Kernel zu verstehen, Speicherverwaltung eher wie ein Stein des Anstoßes in dem Prozess werden.

EDIT: Ich habe die 2.6.29 Quelle mit mir

War es hilfreich?

Lösung

Die pteval_t behandelt nur den Seitentabelleneintrag als opakes blob - auf der Architektur an der Sie suchen, es ist nur ein 32-Bit-Wert ohne Vorzeichen

.

Die Felder innerhalb des PTE verwenden Bitoperatoren und Masken zugegriffen - in der Quelle Ich habe praktisch (Linux 2.6.24), so werden diese in include/asm-x86/pgtable_32.h definiert. Die Felder, die Sie in der Intel-Referenzhandbuch (von denen die meisten Single-Bit-Flags sind) werden hier definiert - zum Beispiel:

#define _PAGE_PRESENT   0x001
#define _PAGE_RW    0x002
#define _PAGE_USER  0x004
#define _PAGE_PWT   0x008
#define _PAGE_PCD   0x010
#define _PAGE_ACCESSED  0x020
#define _PAGE_DIRTY 0x040
#define _PAGE_PSE   0x080   /* 4 MB (or 2MB) page, Pentium+, if present.. */
#define _PAGE_GLOBAL    0x100   /* Global TLB entry PPro+ */
#define _PAGE_UNUSED1   0x200   /* available for programmer */
#define _PAGE_UNUSED2   0x400
#define _PAGE_UNUSED3   0x800

Andere Tipps

würde ich empfehlen den Kauf Verständnis der Linux Kernel von O'Reilly, sowie Linux Device Drivers . Und abonnieren Sie LWN.net ; wenn Sie einen ziemlich guten Start aus ihrem Kernel Index Seite auch ohne Abonnement erhalten können.

Für die Speicherverwaltung, suchen Sie auf der Indexseite für den „Memory Management“ Abschnitt ... und der „Large-Speichersysteme“ Abschnitt. Letztere hat ein paar Artikel, die über den Umzug zu Vier-Ebenen-Seitentabellen sprechen, die in das Verständnis dieser Bereich des Code hilfreich sein sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top