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

osg*_*sgx 7 optimization built-in linux-kernel likely-unlikely

只是在linux内核中看到这个结构,我无法得到它的意思.

110         return unlikely(sl->sequence != start);
Run Code Online (Sandbox Code Playgroud)

我知道likely/ unlikely是用__builtin_expect这里描述的功能制作的:http: //gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

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

但是对于无条件分支,什么样的分支预测提示是可能的?

Jon*_*eet 11

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

if (functionUsingUnlikelyForReturn()) {
   // Do something
} else {
   // Do something different
}
Run Code Online (Sandbox Code Playgroud)

那么分支预测要注意提示是完全合理的.