pkmap_page_table はカーネル起動時の kmap のページテーブルのポインタを持っています。
たとえば、PKMAP_BASE は 0xFFE00000 で、FIXADDR_START は 0xFFF00000 です。カーネルがハイ メモリを使用しようとする場合、TTB0 の PTE は仮想アドレスに対して 0xFFE00000 ~ 0xFFF00000 に設定する必要があります。
それでは、pkmap_page_table の PTE を使用してマップを作成するにはどうすればよいでしょうか。
また、TTB0 の PTE は pkmap_page_table の PTE と同じようにどのように変更されますか?
ありがとうございました。
1 に答える
0
実際にどのような問題が発生しているのかはわかりませんが、「Understading the Linux Kernel」という本にいくつかのコード sinnpet が掲載されています。
309ページで; 最後の行; 「プロセスが目覚めると、関数は、別のプロセスが呼び出しによってページをマップしたかどうかをチェックしますpage_address()
。他のプロセスがまだページをマップしていない場合、内部ループが再開されます。」
于 2013-04-09T05:26:25.200 に答える