The likely() and unlikely() macros are optimization instructions for the compiler. They affect the order of the generated assembly language instructions, but do not affect the flow of control. They can provide hints as to how a test will probably be resolved, but otherwise, just ignore them and look at what's inside.