在linux内核中使用可能/不太可能的返回参数

时间:2011-03-11 17:48:11

标签: optimization linux-kernel built-in likely-unlikely

只要在linux内核中看到这个结构,我就无法理解它的意思。

110         return unlikely(sl->sequence != start);

我知道likely / unlikely是使用此处描述的__builtin_expect函数制作的: http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

  

您可以使用__builtin_expect为编译器提供分支预测信息。

但是无条件分支可以提供哪种分支预测提示?

2 个答案:

答案 0 :(得分:11)

在这里猜测,但想象一下编译器内联函数,你在调用代码中有这个:

if (functionUsingUnlikelyForReturn()) {
   // Do something
} else {
   // Do something different
}

然后分支预测注意提示是完全合理的。

答案 1 :(得分:4)

"不太可能"不提供从函数返回的可能性,而是返回值的预期值。我的猜测是该函数是可内联的,所以这是优化函数调用者的提示。