有时候我们要每隔一段时间打印一些统计信息来辅助调试。利用内核定时器可以方便的实现这个功能。
在内核文件(譬如:[kernel dir]/init/main.c)末尾加入如下代码:
- static struct timer_list leon_timer;
-
static void leon_timer_func(unsigned long data)
-
{
-
printk("<7>###leon, timeout.\n");
-
// schedule timer in 10s.
-
mod_timer(&leon_timer, jiffies + HZ * 10);
-
}
-
-
static int __init leon_timer_init(void)
-
{
-
init_timer(&leon_timer);
-
leon_timer.data = NULL;//(unsigned long)priv;
-
leon_timer.function = (unsigned long)leon_timer_func;
-
leon_timer.expires = jiffies + HZ * 10; //10s
-
add_timer(&leon_timer);
-
return 0;
-
}
-
-
late_initcall(leon_timer_init);
这样就会每隔10s打印###leon, timeout.这句话。定义一个全局的变量,在需要的地方更新这个变量的值,然后在leon_timer_func函数中打印这个变量的值就可以看到系统的状态了。
阅读(1449) | 评论(0) | 转发(0) |