linux kernel中timer的使用
2016-07-03 20:01
381 查看
linux kernel中timer的使用 http://blog.csdn.net/njuitjf/article/details/16888821
在kernel中如果想周期性的干些什么事情,或者某个特定时间干些什么事情,可以使用timer。例如像周期性地dump某段buffer的数据等等。
先来看看使用方法。
先定义一个struct timer_list的对象。eg: struct timer_list dump_t;
这个对象相当于一个闹钟,其中包含了时间点,也就是什么时候激活闹钟;一个函数指针,闹钟激活后干活的地方;还有一个void 指针,在闹钟干活的时候可能需要传给它一些当前的数据。
先看使用方法,之后再稍微深入了解一下。
前面定义好了struct timer_list对象,接下来就需要初始化该对象。
调用函数init_timer进行初步初始化。
然后对结构体中的一些成员进行赋值:
init_timer(&dump_t); // 1. 初始化
dump_t.function = dump_function; // 2. 绑定到时候要调的函数([b]timer任务具体的事务)[/b]
dump_t.data = (unsigned long) my_dev;
dump_t.expires = jiffies + 2*HZ; // 3. 设置timer任务激活时间,2秒钟之后timer被激活,如果是n秒,将2*HZ改为n*HZ。
这样就OK了么?
当然没有,需要把timer加到timer list中,也就是要告诉系统,你申请了这么一个timer。
add_timer(&dump_t); // 4. 告诉系统,你申请了这么一个timer。
现在不明白的地方就是timer到了,干活的地方,即dump_function函数。
函数声明:
static void dump_function(unsigned long channel);
其中的实现么,就随意了,看你想让这个timer干些什么活。
注意一点,这个timer只会响应一次,因为jiffies + HZ时间点只有一个。
如果想让此timer周期性地干活,就需要在dump_function函数中重新启动该timer。
启动方法:
dump_function ()
{
do_your_task();
del_timer(&dump_t);
dump_t.function = dump_function;
dump_t.data = (unsigned long) mydev;
dump_t.expires = jiffies + 2*HZ;
add_timer(&dump_t);
}
相关文章推荐
- linux-搭建ftp服务器相关
- Serial Port Programming on Linux(转载)
- 01,Linux 常见指令集合
- CentOS 6 安装 Python3.5
- centos7 ssh免密码登录
- 阿里云服务器Linux CentOS安装配置(三)yum安装mysql
- linux交换空间
- Linux0.11内核--加载可执行二进制文件之3.exec
- linux快速进入全屏命令行模式
- linux gdb 调试工具
- linux 学习 常用命令
- Linux下利用Niginx进行负载均衡
- linux中使用cifs挂载windows 7的共享文件提示mount error(5): Input/output error
- centos6.5安装mysql
- centos的linux内核源码下载方法
- Linux下screen命令使用教程
- Linux0.11内核--加载可执行二进制文件之2.change_ldt
- linux定时运行命令脚本——crontab
- Linux上配置FTP服务
- linux常用命令