我正在尝试确定我的 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
你可能会考虑研究系统水龙头这样,您就能够编写一个脚本,每当发生您喜欢的事件(包括系统调用)时,该脚本就会触发某个操作。