GNU/Linux >> Belajar Linux >  >> Linux

File di mana struktur data untuk tabel Global Descriptor dan Local Descriptor ditentukan?

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.


Linux
  1. MySQL – Mengonversi ke Data Per Tabel untuk InnoDB

  2. Perangkat Lunak Kompresi File Manakah Untuk Linux yang Menawarkan Pengurangan Ukuran Tertinggi??

  3. Perbedaan Antara .exrc Dan .vimrc?

  1. Mengapa Ls -l Tidak Menunjukkan Waktu Dan Atau Tahun Untuk Setiap File??

  2. Mungkinkah deskriptor file linux 0 1 2 bukan untuk stdin, stdout dan stderr?

  3. Bagaimana saya bisa membuat tcpdump menulis ke file dan menghasilkan data standar yang sesuai?

  1. Terjebak memilih antara ext4 dan ext3 untuk sistem file

  2. Dalam symlink yang menunjuk ke '127.0.1.1:+xxxxx', untuk apa karakter plus?

  3. Apa perbedaan antara file authorized_keys dan known_hosts untuk SSH?