加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux的时钟处理机制

发布时间:2016-01-26 08:34:39 所属栏目:Linux 来源:网络整理
导读:在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理 等等。所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统

2.3.3 time_init 函数

函数 time_init 的实现如清单2-2

清单2-2 time_init 函数

void __init time_init(void)
{
  ……
  init_tsc_clocksource();
  late_time_init = choose_time_init();
}

函数 init_tsc_clocksource 初始化 tsc 时钟源。choose_time_init 实际 是函数 hpet_time_init ,其代码清单2-3

清单2-3 hpet_time_init 函数

void __init hpet_time_init(void)
{
  if (!hpet_enable())
    setup_pit_timer();
  setup_irq(0, &irq0);
}

函数 hpet_enable 检测系统是否可以使用 hpet 时钟,如果可以则初始化 hpet 时钟。否则初始化 pit 时钟。最后设置硬件时钟发生时的处理函数(参见 2.4节)。

初始化硬件时钟这个过程主要包括以下两个过程(参见 hpet_enable 的实现 ):

初始化时钟源信息( struct clocksource 类型的变量),并将其添加到时 钟源链表中,即 clocksource_list 链表(参见图2-1)。

初始化时钟事件设备信息( struct clock_event_device 类型的变量),并 向通知链 clockevents_chain 发布通知:一个时钟事件设备要被添加到系统中 。在通知(执行回调函数)结束后,该时钟事件设备被添加到时钟事件设备链表 中,即 clockevent_devices 链表(参见图2-1)。有关通知链的内容参见2.2节 。

需要注意的是在初始化时钟事件设备时,全局变量 global_clock_event 被 赋予了相应的值。该变量保存着系统中当前正在使用的时钟事件设备(保存了系 统当前使用的硬件时钟中断发生时,要执行的中断处理函数的指针)。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读