// 更新全局时间(由动态时钟调用)
// 函数任务:
// 1.更新last_jiffies_update,记录距离上次更新jiffies经历的ns
// 2.更新jiffies_64,墙上时间,计算cpu负载
// 3.更新下次周期时钟的到期时间
// 注:
// 1.在关中断情况下调用该函数
// 2.last_jiffies_update,记录距离上次更新经历的时钟周期(ns)
1.1 static void tick_do_update_jiffies64(ktime_t now)
{
unsigned long ticks = 0;
ktime_t delta;
write_seqlock(&xtime_lock);
//距离上次更新jiffies经历的ns
delta = ktime_sub(now, last_jiffies_update);
if (delta.tv64 >= tick_period.tv64) {
//一个时钟周期剩余的ns
delta = ktime_sub(delta, tick_period);
//正常情况下,相邻更新的jiffies差一个时钟周期
last_jiffies_update = ktime_add(last_jiffies_update,
tick_period);
//慢速路径:
// jiffies距离上次更新的时间超过一个时钟周期
if (unlikely(delta.tv64 >= tick_period.tv64)) {
s64 incr = ktime_to_ns(tick_period);
//剩余的时钟周期
ticks = ktime_divns(delta, incr);
last_jiffies_update = ktime_add_ns(last_jiffies_update,
时间子系统14_全局时间维护
最新推荐文章于 2021-05-04 07:54:37 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)