【问题标题】:Switch context in linux x86 from userspace to run with Xenomai从用户空间切换 linux x86 中的上下文以使用 Xenomai 运行
【发布时间】:2014-11-24 16:31:15
【问题描述】:

我需要在我的 x86 平台上使用 linux 中的上下文切换,类似于 ucontext.h,

但不幸的是 ucontext 使用内核调用来做到这一点。 在我的 Xenomai 环境中,任何内核函数调用都会将系统变为辅助模式(linux 调度)

那么如何在 x86 平台上通过存储 FPU 寄存器来切换上下文而不离开用户空间?

【问题讨论】:

  • 你从哪里得到ucotext.h?这个ucotext.h 做了什么?你的问题需要更清楚。
  • 对不起。我的意思是 ucontext.h。这是标准的 glibc 函数
  • ucontext 不使用内核调用来切换上下文。确实它会进行内核调用,但这只是为了更新信号掩码(应该具有可预测的性能并且肯定不会阻塞)。如果即使这会影响 Xenomai 并且您仍然更喜欢 ucontext 而不是替代方案,我认为您可以从 glibc 中复制代码并删除信号掩码的更新。

标签: c linux xenomai


【解决方案1】:

我找到了解决方案。使用 longjmp 代替 swapcontext 做同样的事情,但不执行内核调用,并且不将系统切换到辅助模式。

在这里找到了解决方案: http://www.1024cores.net/home/lock-free-algorithms/tricks/fibers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多