Dear All, As you read kernel code, you occasionally encounter strange-looking C idioms. It's a good idea to share explanations of these :) So here are a few random links. The "do {} while(0)" -- https://gcc.gnu.org/onlinedocs/cpp/Swallowing-the-Semicolon.html, explained at the source. The token paste operator ## and variadic macros https://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html A story of how ## was used to obfuscate a backdoor in a cryptocoin: http://earlz.net/view/2016/01/16/0717/analyzing-the-56-million-exploit-and-cryptsys-security It used this trick to make source code look innocuous: +#define S_ORDER(a,b,c,d) b##a##d##c +#define CLine S_ORDER(I,F,E,L) +#define CRead S_ORDER(p,po,n,e) and then used CLine, CRead, etc. The stringification operator #: https://gcc.gnu.org/onlinedocs/cpp/Stringification.html String concatenation makes it all work: https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html As usual, there's a fun StackOverflow discussion (see the answer with BAD_STRINGIFY and BAD_PASTE, and see if it works for you via "gcc -E"): http://stackoverflow.com/questions/216875/what-are-the-applications-of-the-preprocessor-operator-and-gotchas-to-conside Such is the C preprocessor. And if you think it scary, consider the fact that C++ templates are Turing-complete: any computable function can be computed at _compile-time_ in C++: http://matt.might.net/articles/c++-template-meta-programming-with-lambda-calculus/ Cheers, --Sergey