Linux内核中的宏可变参数(GCC的宏可变参数)。
写内核模块的时候为了调试方便,经常需要wrap一下printk函数。下面的宏定义非常有实用价值。
注意两个井号~~
记到博客里~~
#define seclvl_printk(verb, type, fmt, arg...) \
do { \
if (verbosity >= verb) { \
static unsigned long _prior; \
unsigned long _now = jiffies; \
if ((_now - _prior) > HZ) { \
printk(type "%s: %s: " fmt, \
MY_NAME, __FUNCTION__ , \
## arg); \
_prior = _now; \
} \
} \
} while (0)