Linuxカーネルの制御フローでは、割り込みの位置を持つIDT(例:0x80システムコール)に制御が移ることがわかりました。そして、コントロールは適切なシステムコールに移動します。 IDTは起動時にのみ初期化されることも読んでください。割り込み記述子テーブル(IDT)の変更
実際のカーネルのIDT情報について、その場所などを知りたいと思います。また、知っているように、他の時にそれは変更されているか?
助けてください。
Linuxカーネルの制御フローでは、割り込みの位置を持つIDT(例:0x80システムコール)に制御が移ることがわかりました。そして、コントロールは適切なシステムコールに移動します。 IDTは起動時にのみ初期化されることも読んでください。割り込み記述子テーブル(IDT)の変更
実際のカーネルのIDT情報について、その場所などを知りたいと思います。また、知っているように、他の時にそれは変更されているか?
助けてください。
ルーキットを書いていますか?
とにかく、LIDT/SIDT x86命令を使用して、IDTを直接検索して操作することができます。 IDTフックについての情報は、ちょうどこの件名についてのphrack articlesでもご覧になれます。
Linuxでは、IRQ処理関数の宣言はinclude/linux/interrupt.hにあります。一般的な処理コードはkernel/irq/にあり、プラットフォーム固有のコードはarch /ディレクトリの下にあります。たとえば、arch/x86/kernel/irq.cとそのディレクトリの他のirq * .cファイルを見てください。
LinuxのIRQに関するロックルールとメカニズムについては、kernel/irc/*。cファイルのコメントを読んでください。他のOSは異なるロックルールを持つことができます。がんばろう!