ScaryAardvark Asked: 2010-01-26 11:00:58 +0800 CST2010-01-26 11:00:58 +0800 CST 2010-01-26 11:00:58 +0800 CST 如何确定我的 linux 内核是否使用 SYSENTER / SYSEXIT 进行系统调用 772 我正在尝试确定我的 linux 内核是否正在使用 sysenter/sysexit 指令来启动和终止来自用户空间的系统调用。 我正在运行的内核是“2.6.31.12-174.2.3.fc12.x86_64”。 有任何想法吗? M。 linux kernel 3 个回答 Voted James 2010-01-26T13:35:30+08:002010-01-26T13:35:30+08:00 sysenter/sysexit 更多地取决于你的 CPU 而不是内核——Linux 从 2.5 天开始就使用它。Linux 根据运行的 CPU 类型选择 SYSENTER、SYSCALL 或传统的 int 80 方法。 不知道如何确认它实际上正在被使用。我认为 Systemtap 或 LTT 的水平不够低。也许您可以检测内核并在 vDSO 代码中添加一些跟踪点... gharper 2010-01-26T11:47:17+08:002010-01-26T11:47:17+08:00 我能想到的唯一建议是使用Linux Trace Toolkit创建内核转储并挖掘系统调用。 ktower 2010-01-26T12:06:01+08:002010-01-26T12:06:01+08:00 您可能会考虑研究SystemTap。有了这个,您应该能够编写一个脚本,当您喜欢的事件(包括系统调用)发生时触发一个动作。
sysenter/sysexit 更多地取决于你的 CPU 而不是内核——Linux 从 2.5 天开始就使用它。Linux 根据运行的 CPU 类型选择 SYSENTER、SYSCALL 或传统的 int 80 方法。
不知道如何确认它实际上正在被使用。我认为 Systemtap 或 LTT 的水平不够低。也许您可以检测内核并在 vDSO 代码中添加一些跟踪点...
我能想到的唯一建议是使用Linux Trace Toolkit创建内核转储并挖掘系统调用。
您可能会考虑研究SystemTap。有了这个,您应该能够编写一个脚本,当您喜欢的事件(包括系统调用)发生时触发一个动作。