Vyhledejte na Googlu výraz „Linux Kernel file gdt “ poskytuje přesné výsledky, které hledáte. Toto je odkaz na výsledek vyhledávání knihy s obsahem popisujícím, kde jsou definovány GDT a LDT.
-
Všechny GDT jsou uloženy v cpu_gdt_table pole.
-
Pokud se podíváte do indexu zdrojového kódu, můžete vidět, že tyto symboly jsou definovány v souboru
arch/i386/kernel/head.S
. Myslím si však, že index zdrojového kódu lze zobrazit, když máte kopii knihy. Ale přesto je uveden soubor, kde je definováno GDT.
Zdá se, že pro nejnovější jádro je GDT definováno alespoň ve 3 samostatných souborech.
arch/x86/include/asm/desc_defs.h
arch/x86/include/asm/desc.h
arch/x86/include/asm/segment.h
Rozložení hlavního GDT se zdá být definováno v arch/x86/include/asm/segment.h
kolem řádku 91. Nad tímto řádkem jsou komentáře k rozvržení.
Dokončená tabulka se načte v arch/x86/include/asm/desc.h
pomocí funkce static inline void native_load_gdt(const struct desc_ptr *dtr)
který právě volá operační kód sestavení lgdt
. To je v souladu se způsobem, jakým starší jádra načítají tabulku do procesoru. Viz linka 303 zde. V kódové základně však nemohu najít žádná volání této funkce. Prosím, pomozte mi to někdo zjistit.
Také nemohu najít ekvivalent k definování konstant skutečné tabulky jako na řádku 479 v novějších jádrech.