Linux 时钟处理机制
代码解释: ●初始化本 CPU 上的软件时钟相关的数据结构,参见3.2节 函数 time_init 的实现如清单2-2
函数 init_tsc_clocksource 初始化 tsc 时钟源.choose_time_init 实际是函数 hpet_time_init ,其代码清单2-3
函数 hpet_enable 检测系统是否可以使用 hpet 时钟,如果可以则初始化 hpet 时钟.否则初始化 pit 时钟.设置硬件时钟发生时的处理函数(参见2.4节). 初始化硬件时钟这个过程主要包括以下两个过程(参见 hpet_enable 的实现): 1初始化时钟源信息( struct clocksource 类型的变量),并将其添加到时钟源链表中,即 clocksource_list 链表(参见图2-1). 2.4 硬件时钟处理过程 由2.3.3可知硬件时钟中断的处理函数保存在静态变量 irq0 中,其定义如清单2-4
由定义可知:函数 timer_event_interrupt 为时钟中断处理函数,其定义如清单2-5
从代码中可以看出:函数 timer_event_interrupt 实际上调用的是 global_clock_event 变量的 event_handler 成员.那 event_handler 成员指向哪里呢? 为了说明这个问题,不妨假设系统中使用的是 hpet 时钟.由2.3.3节可知 global_clock_event 指向 hpet 时钟事件设备( hpet_clockevent ).查看 hpet_enable 函数的代码并没有发现有对 event_handler 成员的赋值.继续查看时钟事件设备加入事件的处理函数 tick_notify ,该函数记录了当时钟事件设备发生变化(例如,新时钟事件设备的加入)时,执行那些操作(参见2.3.1节),代码如清单2-6
由代码可知:对于新 |
|||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |