linux3.4.2内核定时器time_list的使用

在有些驱动程序中,我们需要用定时的功能去扫描一个硬件,或者说成去执行一个函数,那么我们可以采用内核动态定时器:

struct timer_list {
	/*
	 * All fields that change during normal runtime grouped to the
	 * same cacheline
	 */
	struct list_head entry;
	unsigned long expires;
	struct tvec_base *base;
       /* 定时器到期后,执行的函数 */
	void (*function)(unsigned long);
	unsigned long data;

	int slack;

#ifdef CONFIG_TIMER_STATS
	int start_pid;
	void *start_site;
	char start_comm[16];
#endif
#ifdef CONFIG_LOCKDEP
	struct lockdep_map lockdep_map;
#endif
};
1.定义一个内核定时器
2.初始化内核结构体

        init_timer(&xxx_timer);
xxx_timer.function = xxx_timer_function;
add_timer(&buttons_timer);

    xxx_timer.function = xxx_timer_function这里就是指定定时时间到时,去执行的函数,其实干脆就叫定时器中断得了。

3.修改定时器的值:

mod_timer(&xxx_timer, jiffies+HZ/100);

   将定时器的值设置为当前的内核计时器值+HZ/100,意思就是10ms以后执行xxx_timer_function函数,干脆叫定时器中断服务程序。

   jiffies是内核的一个时钟节拍,研究过操作系统的都知道,相当于是这个CPU只要在工作,这个值就在++。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值