我目前正在尝试实现我自己的VDSO。我见过本教程,它解释了如何做到这一点。
然而,本教程是为Linux2.6.x编写的,我想在Linux4.8.x上使用它。但是vdso的体系结构在这个版本(例如vexu.h已经被抑制)之后发生了很大的变化,我不知道如何调整它以使它工作。
您知道如何将本教程用于最近的内核,或者在哪里可以找到有关vdso的足够资源来实现自己的内核?
另外,您知道我是否可以简单地将任意syscall的行为重新创建为VDSO吗?我知道从安全的角度来看,这是一个非常糟糕的主意(而且性能提升是微不足道的)。
发布于 2018-11-20 14:19:10
我不确定是否有相同风格的更新教程,但更改是有限的:
arch/x86/vdso向arch/x86/entry/vdso迁移;后者意味着您只需要在arch/x86/include/asm/vvar.h中用DECLARE_VVAR宏在固定偏移量处声明一次变量。要定义它,请使用DEFINE_VVAR宏;若要访问它,请使用VVAR宏。上面的链接提交有许多示例(共享变量的所有现有用途)。
您不能在vDSO中重新创建任意syscall的行为,至少在内核模式下调用内核是不可能的。vDSO只对可以在用户空间中处理的调用非常有用;这些调用并不多。
https://unix.stackexchange.com/questions/482964
复制相似问题