时间子系统1_lapic时钟初始化

本文档详细介绍了Linux内核中x86平台的初始化过程,特别是LAPIC时钟中断的初始化。从x86_init_ops结构开始,到init_IRQ函数调用native_init_IRQ初始化ISA和APIC中断,接着是apic_intr_init函数初始化SMP中断和LAPIC时钟。smp_intr_init用于SMP IPI中断初始化,而lapic_apic_timer_interrupt和local_apic_timer_interrupt处理LAPIC时钟中断和事件。最后,setup_APIC_timer注册并设置LAPIC时钟事件设备。
摘要由CSDN通过智能技术生成
//	参考: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 = {
	...

	//apic控制器初始化
	.irqs = {
		.pre_vector_init	= init_ISA_irqs,
		.intr_init		= native_init_IRQ,
		.trap_init		= x86_init_noop,
	},

	...
};
//	中断初始化
//	调用路径:start_kernel->init_IRQ
1.2	void __init init_IRQ(void)
{
	//中断初始化
	...
	x86_init.irqs.intr_init();
}
//	x86体系结构中断初始化
//	函数任务:
//		1.初始化isa 0~15号中断
//		2.初始化apic中断
1.3 void __init native_init_IRQ(void)
{
	int i;
	//初始化isa 0~15号中断
	x86_init.irqs.pre_vector_init();

	//初始化apic中断
	apic_intr_init();
	...
}

//	apic中断初始化
//	函数任务:
//		1.smp 中断初始化
//		2.lapic时钟中断初始化
//		3.x86平台专用ipi
//		4.其他
1.4 static void __init apic_intr_init(void)
{
	//smp 中断初始化
	smp_intr_init();
	...
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_LOCAL_APIC)	
	//lapic时钟中断初始化
	alloc_intr_gate(LOCAL_TIMER_VECTOR, apic_timer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值