Linux 2.6 内核阅读笔记 时间度量

2014年7月27日 定时器

在80x86体系结构上,内核可能需要和好几种时钟和定时器打交道,大概有:

实时时钟(RTC),时间戳计数器(TSC),可编程间隔定时器(PIT),CPU本地定时器,高精度事件定时器(HPET),ACPI电源管理定时器。

linux内核使用来定时器对象来代表一种定时器,采用函数指针实现类似面向对象的功能。

<span style="font-size:14px;">struct timer_opts {
        char* name;
        void (*mark_offset)(void);
        unsigned long (*get_offset)(void);
        unsigned long long (*monotonic_clock)(void);
        void (*delay)(unsigned long);
        unsigned long (*read_timer)(void);
        int (*suspend)(pm_message_t state);
        int (*resume)(void);
};</span>
linux内核通过编译期宏定义来优先选择最优的定时器来使用,使用一个cur_timer的全局变量来表示系统正在使用的定时器。

<span style="font-size:14px;">static struct init_timer_opts* __initdata timers[] = {
#ifdef CONFIG_X86_CYCLONE_TIMER
       &timer_cyclone_init,
#endif
#ifdef CONFIG_HPET_TIMER
        &timer_hpet_init,
#endif
#ifdef CONFIG_X86_PM_TIMER
        &timer_pmtmr_init,
#endif
        &timer_tsc_init,
        &timer_pit_init,
        NULL,
};</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值