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

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

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

有任何想法吗?

M.

sysenter / sysexit更依赖于你的CPU而不是内核 – Linux在2.5天之前就已经使用了它。 Linux根据运行的CPUtypesselectSYSENTER,SYSCALL或传统的int 80方法。

不知道你怎么能确认它实际上正在使用。 我不认为Systemtap或LTT将看到一个足够低的水平。 也许你可以testing内核,并在vDSO代码中添加一些跟踪点。

只有build议我可以想到将使用Linux跟踪工具包来创build一个内核转储和挖掘系统调用。

您可以考虑查看SystemTap 。 有了这个,你应该可以编写一个脚本来触发一个行为,只要你喜欢的事件(包括系统调用)发生。