阐述Linux内核里面的APIC编程
创始人
2024-06-16 09:00:34
0

微软操作系统的火热,你是在应用Linux操作系统么?如果你是Linux操作系统的老用户。 这里为你讲解的问题会对Linux内核里面的APIC编程有所帮助。Linux内核的名字也是“Linux”。APIC就是高级PIC咯,高级可编程中断控制器。现在的多核系统上面每个cpu对应一个localapic,就是用来管理中断的,包括外部中断和cpu内部中断等。

1、apic的具体原理和规范,可以看“Intel?64andIA-32ArchitecturesSoftwareDeveloper'sManualVolume3A:SystemProgrammingGuide”上的第十章“TheAdvancedProgrammableInterruptController(APIC)“

2、关于APIC在BIOS里面的初始化,大概是BIOS会初始化好APIC,然后提供一张APIC表cpu表给要启动的系统使用吧。在ntel?64andIA-32ArchitecturesSoftwareDeveloper'sManualVolume3A:SystemProgrammingGuide的第8章“MULTIPLE-PROCESSORMANAGEMENT”第9章“PROCESSORMANAGEMENTANDINITIALIZATION”有详细介绍“”。也可以继续看标准文档“ACPIspec40”“IntelMultiprocessorSpecification”上面关于那个表的描述。

3、网上国人写个这篇文章也非常不错,他整理了上面的文档和Linux相关的代码。我也只是发现APIC的这个文档而已,和APIC相关的文档还是比较少吧。
“InterruptinLinux(硬件篇)——细节、实现,与疑问Author:ZX_WING(xing5820@163.com)”

4、内核代码
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/kernel/apic/apic.c
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/kernel/mpparse.c
等都是相关的,可以结合上面说的那个文档和系统启动时的输出看一下,启动时输出的ACPI,apicid,processor那些的都是系统初始化apic的时候打印输出的。
在内核参数加上apic=debug可能看到更详细的输出。

5、自己的驱动需要设置控制apic的时候,也可以使用系统里面定义的那些函数咯。在这里有很多函数声明,也可以去看一下具体是怎么作的
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/include/asm/apic.h
这里有很多宏的定义,都是和apic的配置有关的,可以对应看一下intel的文档。
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/include/asm/apicdef.h

比如KDB就是用ipi(cpu内部中断)的函数来禁止其他cpu的

void(*send_IPI_allbutself)(intvector);
void(*send_IPI_all)(intvector);
void(*send_IPI_self)(intvector);

而一般的apic都是通过下面这两个函数来进行的

apic_wait_icr_idle();
apic_write_around(APIC_ICR2,SET_APIC_DEST_FIELD(x86_cpu_to_apicid[i]));
apic_write(APIC_ICR,icr);//写ICR寄存器,产生ipi中断

x86_cpu_to_apicid是系统导出的一个获取物理apicid的变量,不过不同的内核版本里面实现有点不同,可以看具体的代码。apicid是区分每个apic的标志了,也用于区分不同的processor的。

希望通过本文的介绍你能学会Linux内核里面的APIC编程。

【编辑推荐】

  1. 教会你轻松Linux网卡安装
  2. 实例讲解Linux以太网卡的安装及配置
  3. 全面了解Linux网卡的工作原理
  4. 你了解Linux系统开机知识么?
  5. 教会你Linux操作系统实现email和fax的互转互发

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...