/*
* ratelimited messages with local ratelimit_state,
* no local ratelimit_state used in the !PRINTK case
*/
#ifdef CONFIG_PRINTK
#define printk_ratelimited(fmt, ...) \
({
\
static DEFINE_RATELIMIT_STATE(_rs, \
DEFAULT_RATELIMIT_INTERVAL, \
DEFAULT_RATELIMIT_BURST); \
\
if (__ratelimit(&_rs)) \
printk(fmt, ##__VA_ARGS__); \
})
#else
#define printk_ratelimited(fmt, ...) \
no_printk(fmt, ##__VA_ARGS__)
#endif
限制条件可动态修改,在 /proc 目录下的两个文件:
/proc/sys/kernel/printk_ratelimit
/proc/sys/kernel/printk_ratelimit_burst
printk_ratelimit 表示时间间隔
printk_ratelimit_burst 表示频次间隔
默认情况下 printk_ratelimit 的值是 5 ,printk_ratelimit_burst 的值是 10。
即指定的打印在每5秒的时间里最多只能打印10次。
参考文档:
https://www.cnblogs.com/chorm590/p/12782251.html