定时器是一种软件功能,即允许在将来的某个时刻,函数在给定的时间间隔用完时被调用。超时表示与定时器相关的时间间隔已经用完的那个时刻。
linux上考虑两种类型的定时器,即动态定时和间隔定时器。第一种类型由内核使用,而间隔定时器由进程在用户态创建。
动态定时器
动态定时的主要数据结构是一个叫做tvec_bases的per cpu变量,他包含NR_CPUS个元素,系统中每个CPU都有一个。每个元素是一个tvec_base_t类型的数据结构,他包含相应CPU中处理动态定时器需要的所有数据。
字段tv1的数据解雇为tvec_root_t类型,包含一个vec数组,这个数组由256个list_head元素组成(即256个动态定时器链表组成)。这个结构包含了在紧接着到来的255个节拍内将要到期的所有动态定时器。
字段tv2,tv3和tv4的数据结构都是tvec_t类型,该类型有一个数组vec。这些链表包含在紧接着到来的2^14-1/2^20-1以及2^26-1个节拍内将要到期的所有动态定时器。
字段tv5与前面的字段几乎相同,但唯一区别就是vec数组的最后一项是一个大expires字段值得动态定时器链表。tv5从不需要从其他的数组补充。
动态定时器编程
1,申请timer_list结构并对其初始化,其中必须初始化的有expires,function
2,调用init_timer函数初始化
该函数最终调用下面函数
可看到初始化的几个相关变量。
3,调用add_timer函数将申请的timer_list结构添加到合适的链表
该函数最终调用如下函数添加到对应的链表
其中对于定时器的修改、删除等操作,内核提供了相应的函数。
分享到:
相关推荐
主要是对linux内核中的定时器的使用编写的一个例子,代码中包括timer.c和makefile文件,还有一些已经编译的文件,其中有个timer.ko文件就是内核模块文件,在终端使用 insmod timer.ko就可以插入到linux内核(要与...
linux 内核定时器编程: 包括代码程序和makefile文件 my_timer定时器每个1s 打印1 和 second_timer定时器每隔2s打印2 将rar修改为.tar.bz2
论文《Linux内核中一种高精度定时器的设计与实现》
鉴于此,《Linux内核精髓:精通Linux内核必会的75个绝技》选取了资源管理(CPU、内存、进程等)、文件系统、网络、虚拟化、省电、调试、概要分析、追踪、内核调整等Linux内核的核心主题进行了深入剖析和讲解,总结出...
Linux内核分析方法谈Linux内核分析方法谈Linux内核分析方法谈
内核定时器内核定时器内核定时器内核定时器内核定时器内核定时器
Linux内核的分析,通过本书学习可以了解到Linux的内核机制。
LINUX内核定时器的使用 LINUX内核定时器的使用
linux内核分析资料合集,包括:linux内核完全剖析基于0.12内核、linux内核网络栈实现源代码分析、linux内核注释_v2.2.5、linux2.6内核启动分析--李枝果、怎样读linux内核源代码
linux内核源代码情景分析,对于深入学习者有很大帮助
这是一个Linux内核定时器的实例,可以学习使用
赵炯编著的0.11版linux内核完全注释
基于Linux内核编程的实验报告(Linux内核分析实验报告)
linux内核分析.pdf
深入分析Linux的源代码!希望能帮到大家
Linux内核情景分析 Linux内核情景分析 Linux内核情景分析
linux 内核定时器使用模板 摘自宋宝华书中
文档介绍了实时时钟(RTC),时间戳计时器(TSC),CPU本地定时器,高精度时间定时器(HPET),ACPI电源管理定时器,定时器的数据结构,定时插补,单处理器系统上的计时体系结构,时钟中断处理程序,多处理器系统上...
linux内核源代码分析-定时器与时间管理.ppt
Linux内核分析及常见问题解答