Pencarian google untuk istilah "Linux Kernel file gdt " menghasilkan hasil persis yang Anda cari. Ini adalah tautan ke hasil penelusuran buku dengan konten yang menjelaskan di mana GDT dan LDT ditentukan.
-
Semua GDT disimpan di cpu_gdt_table larik.
-
Jika Anda melihat indeks kode sumber, Anda dapat melihat bahwa simbol-simbol ini ditentukan dalam file
arch/i386/kernel/head.S
. Namun, menurut saya indeks kode sumber dapat dilihat saat Anda memiliki salinan bukunya. Namun demikian, file tempat GDT ditentukan diberikan.
Untuk kernel terbaru, GDT tampaknya didefinisikan dalam setidaknya 3 file terpisah.
arch/x86/include/asm/desc_defs.h
arch/x86/include/asm/desc.h
arch/x86/include/asm/segment.h
Tata letak GDT utama tampaknya ditentukan dalam arch/x86/include/asm/segment.h
sekitar baris 91. Ada komentar tentang tata letak di atas baris ini.
Tabel yang telah selesai dimuat dalam arch/x86/include/asm/desc.h
dengan fungsi static inline void native_load_gdt(const struct desc_ptr *dtr)
yang hanya memanggil opcode rakitan lgdt
. Ini konsisten dengan cara kernel lama memuat tabel ke dalam prosesor. Lihat baris 303 di sini. Namun, saya tidak dapat menemukan panggilan apa pun ke fungsi ini di basis kode. Seseorang tolong bantu mencari tahu ini.
Juga saya tidak dapat menemukan padanan untuk mendefinisikan konstanta dari tabel aktual seperti pada baris 479 di kernel yang lebih baru.