Kernel 소스코드를 보면 likely, unlikely 라는 메크로를 자주 사용한다.
이에 대한 설명이다.
likely(), unlikely() 는 include/linux/compiler.h 에 정의된 macro 이다.
이것의 용도는 컴파일러에게 branch 예측을 도와 주는 용도로 사용이된다.
즉, 대부분 0으로 예측이 된다면 unlikely(x) 의 형태로 쓰고, 1로 예상되는 값을 likely(x) 로 쓴다.
예측을 도와 줌으로써 성능의 향상을 볼 수 있도록 하는 것이다.
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
http://kernelnewbies.org/FAQ/LikelyUnlikely