【发布时间】:2011-01-11 05:06:54
【问题描述】:
在linux内核的控制流中,发现控制转移到了IDT,它有中断的位置(例如:0x80系统调用)。然后控制转移到适当的系统调用。另请阅读 IDT 仅在启动时初始化。
我想了解更多关于来自真实内核的 IDT 信息,比如它的位置。也想知道,其他时间有没有修改?
请帮忙。
【问题讨论】:
标签: linux linux-kernel interrupt system-calls interrupt-handling
在linux内核的控制流中,发现控制转移到了IDT,它有中断的位置(例如:0x80系统调用)。然后控制转移到适当的系统调用。另请阅读 IDT 仅在启动时初始化。
我想了解更多关于来自真实内核的 IDT 信息,比如它的位置。也想知道,其他时间有没有修改?
请帮忙。
【问题讨论】:
标签: linux linux-kernel interrupt system-calls interrupt-handling
写一个rooktit,是吗?
无论如何,您可以使用 LIDT/SIDT x86 指令直接查找和操作 IDT。 您还可以找到一些关于 IDT 挂钩的一些信息 phrack articles 正是关于这个主题。
【讨论】:
在 Linux 中,IRQ 处理函数的声明可以在 include/linux/interrupt.h 中找到。通用处理代码可以在 kernel/irq/ 中找到,平台特定代码可以在 arch/ 目录下找到 - 请查看 arch/x86/kernel/irq.c 以及该目录中的其他 irq*.c 文件。
您应该阅读 kernel/irc/*.c 文件中的 cmets,以了解 Linux 中有关 IRQ 的锁定规则和机制。请注意,其他操作系统可以并且将会有不同的锁定规则。祝你好运!
【讨论】: