Linux 内核时钟架构之时钟源模块对外接口

既然时钟源对外提供了计数能力,那么可以通过哪些接口呢?
 
这里需要唯一说明的是,整个时钟源模块对外只有一个接口,即提供到timekeeping使用,其读取计数值计数,计算时间。
核心函数是timekeeping_notify();
 
这个函数在选取合适的clocksource后被调用。

/**  * timekeeping_notify - Install a new clock source  * @clock:  pointer to the clock source  *  * This function is called from clocksource.c after a new, better clock  * source has been registered. The caller holds the clocksource_mutex.  */ int timekeeping_notify(struct clocksource *clock) {  struct timekeeper *tk = &tk_core.timekeeper;

 if (tk->tkr_mono.clock == clock)   return 0;  stop_machine(change_clocksource, clock, NULL);  tick_clock_notify();  return tk->tkr_mono.clock == clock ? 0 : -1; }

当然在timer在oneshot模式下,即配置CONFIG_TICK_ONESHOT时,通知tick sched模块。

/**  * Async notification about clocksource changes  */ void tick_clock_notify(void) {  int cpu;

 for_each_possible_cpu(cpu)   set_bit(0, &per_cpu(tick_cpu_sched, cpu).check_clocks); }

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值