我可以在 Linux 驱动程序中使用 C11 的 <stdatomic.h> 吗?还是必须使用内存屏障的 Linux 函数?

标签 c gcc linux-kernel kernel driver

我可以使用 #include <stdatomic.h> 吗?和 atomic_thread_fence() memory_order 来自 Linux 驱动程序(内核空间)中的 C11,还是我必须使用内存屏障的 Linux 函数:

使用:

  • Linux 内核 2.6.18 或更高版本
  • GCC 4.7.2 或更高版本

最佳答案

如果您正在编写内核代码,您应该使用 C 来编写,并且使用当前内核(附带 gcc)所需的 C 版本来编写。如果你想让它被主线接受(或者把它写得好像它会被接受一样),你应该使用 Linux 函数。您还会发现它们的工作没有意外的惊喜,并且您将获得更好的调试帮助。

总结:使用linux函数。

关于我可以在 Linux 驱动程序中使用 C11 的 <stdatomic.h> 吗?还是必须使用内存屏障的 Linux 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497761/

相关文章:

c++ - Linux:C/C++ 标准库静态与动态链接

c++ - rand_r 不在范围内,gcc mingw 在 Windows 上的 cygwin 下

c++ - 为什么 "#define WC(p) L#p"在 GCC 和 Clang 中不起作用?

macos - 在 OS X 上安装 GCC 4.7.1

c - Eclipse 中包含路径问题 : probably Indexer

无法从 Yocto 为 BeagleBone 编译 Linux 内核 DTSI 文件

使用结构体的 C 堆栈实现

c - 维吉尼亚如何停止增量

c - 在内核中使用 rdtsc 测量执行时间

c++ - GLSL 变换反馈返回数组与 vector