linux timer 回调函数,Linux内核中关于定时器Timer的应用

在Touchscreen驱动中

1 声明

Ad7877.c (\linux-2.6.30.4\drivers\input\touchscreen):struct timer_listtimer;/* P: lock */

2 初始化

在函数 static int __devinit ad7877_probe(struct spi_device *spi) 中

执行 setup_timer(&ts->timer, ad7877_timer, (unsigned long) ts); 进行初始化

其中ad8777_timer是回调函数,ts为给该函数的参数

3 使用

在函数 static void ad7877_callback(void *_ts) 中

mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);

mod_timer函数用于修改超时时间,使timer继续生效

否则timer只会执行一次回调函数

4 释放

在函数 static void ad7877_disable(struct ad7877 *ts) 中

if (del_timer_sync(&ts->timer))

删除timer,del_timer_sync用于多核cpu同步,否则可以使用del_timer进行删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 定时器 `timer_list` 是内核用于管理定时器的数据结构之一。它是一个双向链表,包含了所有当前运行的定时器。 在 Linux 内核定时器是通过 `struct timer_list` 结构体来表示的。它包含了定时器的各种属性,如定时器的超时时间、回调函数、私有数据等。 `timer_list` 数据结构被定义在 `<linux/timer.h>` 头文件,其定义如下: ```c struct timer_list { struct list_head entry; unsigned long expires; void (*function)(unsigned long); unsigned long data; #ifdef CONFIG_TIMER_STATS void *start_site; char start_comm[16]; int start_pid; #endif }; ``` 其,`entry` 是双向链表的节点,用于将定时器添加到 `timer_list` 。`expires` 字段记录了定时器的超时时间,以 jiffies 单位表示。`function` 是定时器超时时要执行回调函数,`data` 则是传递给回调函数的参数。 要使用 `timer_list`,需要先声明一个 `struct timer_list` 类型的变量,并进行初始化。然后可以使用 `init_timer()` 函数来初始化定时器,并使用 `add_timer()` 函数将定时器添加到 `timer_list` 。当定时器超时时,内核会自动调用指定的回调函数。 需要注意的是,在使用定时器后,应在不需要时及时删除或停止它们,以避免资源浪费或不正确的行为。 这就是关于 Linux 定时器 `timer_list` 的简要介绍,希望能对你有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值