2

在linux内核中的控制流程中,发现控制移动到具有中断位置的IDT(例如:0x80系统调用)。然后控制转移到适当的系统调用。另请阅读,IDT仅在启动时初始化。中断描述符表(IDT)修改

我想知道更多关于来自真实内核的IDT信息,比如它的位置。还想知道,在其他任何时候都修改它?

请帮忙。

回答

4

写一个rooktit,我们?

无论如何,您可以使用LIDT/SIDT x86指令来直接查找和操作IDT。 你也可以找到一些有关IDT钩住一些好的phrack articles关于这个问题的信息。

1

在Linux中,有关IRQ处理函数的声明可以在include/linux/interrupt.h中找到。通用处理代码可以在kernel/irq/以及arch /目录下的平台特定代码中找到 - 请查看该目录中的arch/x86/kernel/irq.c和其他irq * .c文件。

您应该阅读kernel/irc/*。c文件中的注释,以了解有关Linux中IRQ的锁定规则和机制。请注意,其他操作系统可以并将具有不同的锁定规则。祝你好运!