= likely() and unlikely() = In Linux kernel code, one often find calls to `likely()` and `unlikely()`, in conditions, like : {{{ bvl = bvec_alloc(gfp_mask, nr_iovecs, &idx); if (unlikely(!bvl)) { mempool_free(bio, bio_pool); bio = NULL; goto out; } }}} In fact, these functions are hints for the compiler that allows it to correctly optimize the branch, by knowing which is the likeliest one. The definitions of these macros, found in `include/linux/compiler.h` are the following : {{{ #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) }}} The GCC documentation explains the role of `__builtin_except()` :