首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Linux驱动程序中使用来自<stdatomic.h>的C11,还是必须使用Linux的内存屏障函数?

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

Stack Overflow用户
提问于 2014-02-01 12:01:19
回答 2查看 1K关注 0票数 3

我可以在Linux驱动程序(内核-空间)中使用#include atomic_thread_fence()与来自C11的memory_order,还是必须使用Linux的内存屏障函数:

  • http://lxr.free-electrons.com/source/Documentation/memory-barriers.txt
  • ops.txt

使用:

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-01 12:41:51

如果您正在编写内核代码,则应该使用C语言编写,并在当前内核所需的C版本中进行编写(发布gcc版)。如果您想让它被接受到主线中(或者把它写成要被接受的样子),那么您应该使用Linux函数。您还会发现,它们的工作没有意外的惊喜,您将得到更好的调试帮助。

摘要:使用linux函数。

票数 6
EN

Stack Overflow用户

发布于 2015-06-27 17:47:33

编辑:它似乎不起作用。不管有没有,都没有什么区别。驱动程序可以编译,但是lib将返回到普通整数或NOP。

好像很管用。

atomic_store()atomic_load()提供了内核模块驱动程序和userland程序之间所需的线程同步。不确定的是,如果使用回退方法,我的意思是编译器使用标准整数和常规程序集指令。

可以随意查看函数中的源代码intelfreq.c / Core_Cycle()corefreqd.c / Core_Cycle()

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

https://stackoverflow.com/questions/21497761

复制
相关文章

相似问题

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