基于数据结构timer_vec_root,Linux定义了一个全局变量tv1,以表示内核所关心的前256个定时器向量。内核动态定时器机制的实现在内核动态定时器机制的实现中,有三个操作时非常重要的:(1)将一个定时器插入到它应该所处的定时器向量中。动态定时器机制的初始化函数init_timervecs()实现对动态定时器机制的初始化。
基于数据结构timer_vec_root,Linux定义了一个全局变量tv1,以表示内核所关心的前256个定时器向量。内核动态定时器机制的实现在内核动态定时器机制的实现中,有三个操作时非常重要的:(1)将一个定时器插入到它应该所处的定时器向量中。动态定时器机制的初始化函数init_timervecs()实现对动态定时器机制的初始化。
Write_seqlock(&xtime_lock);/*更新xtime…*/Write_sequnlock(&xtime_lock);Read_seqbegin(),read_seqretry();(P125)管理课件Linux下的时钟中断和相关时间应用从用户空间获取时间的调用为Gettimeofday()内核中对应的系统调用为:sys_gettimeofday()P125管理课件
Vista加入到内核的一个高精度的定时器的实现.内核注册定时器最终都会通过调用internal_add_timer来实现.这里要知道内核中的软定时器是用软中断来实现的,软中断的注册以及实现可以看我前面的blog,这里就不介绍了.这个函数功能很简单,它的最关键就是调用__run_timers,这个函数才是真正处理定时器的函数.__run_timers这个函数的主要功能是运行所有超时的定时器: