低精度时钟
2015-08-18 20:58:11 8 举报
低精度时钟是一种时间测量工具,其精确度相对较低。这种时钟通常使用简单的机械或电子装置来测量时间,因此无法提供与高精度时钟相同的准确度。低精度时钟可能存在一定的误差,例如每天可能会有几分钟的偏差。然而,尽管其精确度较低,低精度时钟仍然具有一定的实用价值。它们通常用于日常生活中的一些简单任务,如提醒人们做某些事情或者作为一个基本的时间表参考。此外,由于低精度时钟的制造成本较低,它们在价格上更具竞争力,适合那些对时间要求不高的场合使用。总的来说,低精度时钟是一种经济实惠且能满足基本时间需求的时间测量工具。
作者其他创作
大纲/内容
base-running_timer = timer
vec = base-tv4.vec + i
call_timer_fn
低分辨率定时器的回调函数是执行在软件中断上下文中的
vec = base-tv5.vec + i
timer_pending
time_after_eq
计算到期定时器链表在tv1中的索引
internal_add_timer
mod_timer
list_replace_init
detach_timer
定时器系统只要以base.timer_jiffies的低8位作为索引,取出tv1中相应的链表,里面正好包含了所有在该jiffies值到期的定时器列表什么时候处理tv2--tv5中的定时器?每当base.timer_jiffies的低8位为0值时,这表明base.timer_jiffies的第8-13位有进位发生,这6位正好代表着tv2,这时只要按base.timer_jiffies的第8-13位的值作为下标,移出tv2中对应的定时器链表,然后用internal_add_timer把它们从新加入到定时器系统中来,因为这些定时器一定会在接下来的256个tick期间到期,所以它们肯定会被加入到tv1数组中,这样就完成了tv2往tv1迁移的过程。同样地,当base.timer_jiffies的第8-13位为0时,这表明base.timer_jiffies的第14-19位有进位发生,这6位正好代表着tv3,按base.timer_jiffies的第14-19位的值作为下标,移出tv3中对应的定时器链表,然后用internal_add_timer把它们从新加入到定时器系统中来,显然它们会被加入到tv2中,从而完成tv3到tv2的迁移,tv4,tv5的处理可以以此作类推
N
index = base-timer_jiffies & TVR_MASK
vec = base-tv3.vec + i
__mod_timer
获取timer_list对象和回调函数
Y
该cpu定时器系统运行时间递增一个tick
获取本地cpu中的tevc_bases
__run_timers
open_softirq
获取本地cpu的tev_base,这是一个临 界资源,里边是一个for(;;)循环,如果找不到说明已经迁移到了别的CPU
vec = base-tv2.vec + i
lock_timer_base
将所有的链表元素重新加到base中
\t\t++base-timer_jiffies;
设为当前运行定时器,并从tvec_base中删除定时器
index是否为空
list_for_each_entry_safe
list_add_tail
取出到期的定时器链表
run_timer_softirq
list_first_entry
smp_processor_id
list_empty
open_softirq把run_timer_softirq注册为TIMER_SOFTIRQ的处理函数
add_timer
detach_if_pending
init_timers
__internal_add_timer
是否有timer迁移
detach_expired_timer
当cpu的每个tick事件到来时
vec = base-tv1.vec + i
0 条评论
下一页