首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Linux 2.6+中的系统调用(syscalls)

替换Linux 2.6+中的系统调用(syscalls)
EN

Stack Overflow用户
提问于 2011-06-18 20:48:24
回答 1查看 669关注 0票数 2

我正在考虑编写一个用户土地线程库,因为在这方面似乎没有积极的工作,我相信C++0x 承诺与未来可能会给这个模型一些权力。不幸的是,为了使该模型工作,必须确保对阻塞调用进行上下文切换。因此,我想拦截每个syscall,以便用异步版本替换它。这里有一些警告:

  • 我知道几乎每个普通的syscall都有异步系统,但是由于向后兼容性的原因,这不是一个可行的解决方案。
  • 我知道在Linux2.4或更早版本中,直接更改sys_call_table是可能的,但这一点已经消失了。
  • 如果需要的话,我希望我的库可以静态链接,所以LD_PRELOAD技巧是不可行的。
  • 类似地,内核模块不是一个选项,因为这应该是一个用户库。
  • 最后,出于类似的原因,ptrace()也不是一个选项。我不能让我的图书馆分叉一个新的过程只是为了被使用。

这个是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-23 18:23:23

我正在考虑编写一个userland线程库,因为在这方面似乎没有活跃的工作。

您可能想看看线程库马塞尔 (及其出版物)和MPC,它们实现了混合线程(内核和用户级别)线程,主要是为了实现高性能计算,因此它们必须为这个阻塞系统调用找到一些解决方案。

为了避免在应用程序进行阻塞系统调用时阻塞内核线程,Marcel在可用时使用Scheduler激活,或者只是在动态符号级别拦截此类阻塞调用。

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

https://stackoverflow.com/questions/6398830

复制
相关文章

相似问题

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