1.判断内核代码的状态
in_interrupt()
1.判断内核自己是否处于中断上下文中;
2.无需输入参数;
3.如果处理器运行在中断上下文就返回非零值。(包含硬件中断和软件中断)。
in_atomic()
1.判断是否位于原子上下文中;
2.无输入参数;
3.调度不被允许时,返回非零值。(包含硬/软中断、拥有自旋锁的的时间点)。
2.内核定时器使用
1.创建结构体(定时器)
struct timer_list {
…
unsigned long expires; //期望运行的时间
void (*function)(unsigned long); //调用的函数
unsigned long data; //传入函数的参数数据
};
struct timer_list timer; //先定义再初始化
init_timer(&test.timer);
2.初始化其中的变量
timer.expires = jiffies + msecs_to_jiffies(1000); //延时1s执行
timer.function = timer_fun