如何确定我的 Linux 内核是否使用 SYSENTER/SYSEXIT 进行系统调用

如何确定我的 Linux 内核是否使用 SYSENTER/SYSEXIT 进行系统调用

我正在尝试确定我的 Linux 内核是否使用 sysenter/sysexit 指令来启动和终止来自用户空间的系统调用。

我正在运行的内核是“2.6.31.12-174.2.3.fc12.x86_64”。

有任何想法吗?

M.

答案1

sysenter/sysexit 更多地取决于您的 CPU,而不是内核 - Linux 从早期的 2.5 天开始就使用它。Linux 根据运行的 CPU 类型选择 SYSENTER、SYSCALL 或旧式 int 80 方法。

不确定如何确认它确实被使用了。我认为 Systemtap 或 LTT 不会在足够低的级别上查看。也许您可以检测内核并在 vDSO 代码中添加一些跟踪点...

答案2

我能想到的唯一建议是使用Linux 跟踪工具包创建内核转储并深入研究系统调用。

答案3

你可能会考虑研究系统水龙头这样,您就能够编写一个脚本,每当发生您喜欢的事件(包括系统调用)时,该脚本就会触发某个操作。

相关内容