likelyとunlikely
Rev.1を表示中。最新版はこちら。
カーネルソースを見るとlikelyとunlikelyが条件文でやたら使われている。include/linux/compiler.hで下記のように定義されている。#define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0)
で__builtin_expectはgccの機能で、コンパイラに分岐予測のヒントを与えて最適なコードを生成させるものらしい。if条件が真になる可能性が高い場合likelyを、そうでない場合はunlikelyを使うとのことで、ロジックには全く関係。ソース読む場合は無視すればよさそうです。
if (unlikely(!area))
    return NULL;
であろうと
if (likely(!area))
    return NULL;
であろうと
if (!area)
    return NULL;
これでいいわけですね。



