gpt4 book ai didi

c - IS_ERR() 宏的有效使用

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:01 24 4
gpt4 key购买 nike

我正在创建一个简单的驱动程序并遇到了执行此操作的示例代码

  if(IS_ERR(c = class_create(THIS_MODULE, "char")))
{
...
}

我想知道 IS_ERR() 背后是什么,我看到了这个它定义为,...

#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
static inline long __must_check IS_ERR(const void *ptr)
{
return IS_ERR_VALUE((unsigned long)ptr);
}

这个“不太可能”的事情是什么?

最佳答案

引用:http://kernelnewbies.org/FAQ/LikelyUnlikely

likely() 和 unlikely() 是编译器指令,用于以最佳利用处理器流水线的方式重新安排生成的条件分支代码。

if(likely(condition)):在大多数情况下,此条件为“真”,因此编译器应以“then”语句下的代码具有最少跳转和流水线刷新的方式安排分支。

if (unlikely(condition)):在大多数情况下,此条件为“假”,因此编译器应以“else”语句下的代码具有最少跳转和流水线刷新的方式安排分支。

关于c - IS_ERR() 宏的有效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com