首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中创建vdso

在linux中创建vdso
EN

Unix & Linux用户
提问于 2018-11-20 12:35:40
回答 1查看 394关注 0票数 2

我目前正在尝试实现我自己的VDSO。我见过本教程,它解释了如何做到这一点。

然而,本教程是为Linux2.6.x编写的,我想在Linux4.8.x上使用它。但是vdso的体系结构在这个版本(例如vexu.h已经被抑制)之后发生了很大的变化,我不知道如何调整它以使它工作。

您知道如何将本教程用于最近的内核,或者在哪里可以找到有关vdso的足够资源来实现自己的内核?

另外,您知道我是否可以简单地将任意syscall的行为重新创建为VDSO吗?我知道从安全的角度来看,这是一个非常糟糕的主意(而且性能提升是微不足道的)。

EN

回答 1

Unix & Linux用户

发布于 2018-11-20 14:19:10

我不确定是否有相同风格的更新教程,但更改是有限的:

  • arch/x86/vdsoarch/x86/entry/vdso迁移;
  • 变量声明是大大简化

后者意味着您只需要在arch/x86/include/asm/vvar.h中用DECLARE_VVAR宏在固定偏移量处声明一次变量。要定义它,请使用DEFINE_VVAR宏;若要访问它,请使用VVAR宏。上面的链接提交有许多示例(共享变量的所有现有用途)。

您不能在vDSO中重新创建任意syscall的行为,至少在内核模式下调用内核是不可能的。vDSO只对可以在用户空间中处理的调用非常有用;这些调用并不多。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/482964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档