【问题标题】:Using setcontext(), getcontext() in embedded system在嵌入式系统中使用 setcontext()、getcontext()
【发布时间】:2014-03-11 02:55:21
【问题描述】:

我知道,对于基于 x86 的普通桌面系统,使用上述 API 是安全的,但对于使用 ARM 或 MIP 的嵌入式系统,某些不常用的 API 可能会获得较少的支持或错误的实现。在自己的程序中包含这些高级 API 是否完全可移植?

【问题讨论】:

  • 如果不查看给定嵌入式系统的规范和文档,您甚至无法确定它是否正确实现了 memcpy
  • 有人曾经说过:没有可移植的代码,只有被移植的代码。查看您的具体目标,选择可用的目标。
  • 优秀的GNU Pth 包括描述setjmp, longjmp, sig*stack/jmp 替代方案的技术论文(以及ctx 切换代码)。当然,在符合 POSIX 的现代平台上使用 pthread 会更容易。

标签: c posix


【解决方案1】:

看起来它们在 2004 年被标记为过时,并于 2008 年从 POSIX 中删除。因此依赖它们来工作似乎......值得怀疑。

【讨论】:

    【解决方案2】:

    操作系统支持的所有平台通常都支持这些 API。它们也是几乎所有协作式多任务实现的基础,并广泛用于各种编程语言的解释器中,因此通常会得到广泛的测试。

    这些调用以前在 Linux 中曾经被破坏,但这是一个常见的故事。正如其他人所提到的,无论如何都必须进行广泛的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多