如何检查vsyscall模式

时间:2015-03-31 19:47:16

标签: linux linux-kernel kernel configuration-files system-calls

我正在努力找出如何检查[vsyscall]表的配置方式(原生或模拟)。该设置应在名为vsyscall_mode的变量中设置。任何人都可以了解如何检查此设置?

通过重新运行cat /proc/self/maps我发现[vsyscall]的内存映射区域没有改变,[vdso]的内存映射区域也没有改变。这是否意味着vsyscall的设置被设置为native?

3 个答案:

答案 0 :(得分:3)

vsyscall模式在内核配置中设置,因此您可以在本机和仿真之间进行选择。

for fish-shell:

cat /usr/src/linux-headers-(uname -r)/.config | grep VSYSCALL 

for bash:

cat /usr/src/linux-headers-$(uname -r)/.config | grep VSYSCALL 
debian 8上的

输出(例如):

CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_X86_VSYSCALL_EMULATION=y

答案 1 :(得分:0)

结合前两个答案,您可以使用zgrep

zgrep VSYSCALL /proc/config.gz

如果你在启动时设置vsyscall=emulate,输出将类似于:

CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_X86_VSYSCALL_EMULATION=y
# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
CONFIG_LEGACY_VSYSCALL_NONE=y

答案 2 :(得分:-1)

通常在/proc/config.gz文件中可用,它将包含当前的内核配置。