// 时钟mult :mult/2^shift = ns/cyc
// 参考:http://www.bluezd.info/archives/reg_clock_event_device_1
// x86平台初始化
// 注:arch/x86/kernel/x86_init.c
1.1 struct x86_init_ops x86_init __initdata = {
...
//时钟初始化
.timers = {
.setup_percpu_clockev = setup_boot_APIC_clock,
.tsc_pre_init = x86_init_noop,
.timer_init = hpet_time_init,
},
...
};
// 时钟初始化
// 函数任务:
// 1.初始化hpet时钟源,时钟事件设备
// 2.初始化tsc时钟源
// 调用路径start_kernel->time_init
1.1 void __init time_init(void)
{
//初始化hpet时钟源
x86_init.timers.timer_init();
tsc_init();
}
// 初始化hpet
// 函数任务:
// 1.注册hpet clocksource,hpet clockevent
// 2.注册时钟中断处理程序
// 调用路径:time_init->hpet_time_init
2.1 void __init hpet_time_init(void)
{
//注册hpet clocksource,hpet clockevent
if (!hpet_enable())
setup_pit_timer();
//分配时钟中断
setup_default_timer_irq();
}
// 注册hpet时钟源
// 调用路径:hpet_time_init->hpet_enable->hpet
时间子系统10_hpet时钟初始化
最新推荐文章于 2024-05-24 15:03:39 发布