成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

闡述Linux內(nèi)核里面的APIC編程

運(yùn)維 系統(tǒng)運(yùn)維
微軟操作系統(tǒng)的火熱,你是在應(yīng)用Linux操作系統(tǒng)么?如果你是Linux操作系統(tǒng)的老用戶。 這里為你講解的問(wèn)題會(huì)對(duì)Linux內(nèi)核里面的APIC編程有所幫助。Linux內(nèi)核的名字也是“Linux”。

微軟操作系統(tǒng)的火熱,你是在應(yīng)用Linux操作系統(tǒng)么?如果你是Linux操作系統(tǒng)的老用戶。 這里為你講解的問(wèn)題會(huì)對(duì)Linux內(nèi)核里面的APIC編程有所幫助。Linux內(nèi)核的名字也是“Linux”。APIC就是高級(jí)PIC咯,高級(jí)可編程中斷控制器。現(xiàn)在的多核系統(tǒng)上面每個(gè)cpu對(duì)應(yīng)一個(gè)localapic,就是用來(lái)管理中斷的,包括外部中斷和cpu內(nèi)部中斷等。

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

2、關(guān)于APIC在BIOS里面的初始化,大概是BIOS會(huì)初始化好APIC,然后提供一張APIC表cpu表給要啟動(dòng)的系統(tǒng)使用吧。在ntel?64andIA-32ArchitecturesSoftwareDeveloper'sManualVolume3A:SystemProgrammingGuide的第8章“MULTIPLE-PROCESSORMANAGEMENT”第9章“PROCESSORMANAGEMENTANDINITIALIZATION”有詳細(xì)介紹“”。也可以繼續(xù)看標(biāo)準(zhǔn)文檔“ACPIspec40”“IntelMultiprocessorSpecification”上面關(guān)于那個(gè)表的描述。

3、網(wǎng)上國(guó)人寫(xiě)個(gè)這篇文章也非常不錯(cuò),他整理了上面的文檔和Linux相關(guān)的代碼。我也只是發(fā)現(xiàn)APIC的這個(gè)文檔而已,和APIC相關(guān)的文檔還是比較少吧。
“InterruptinLinux(硬件篇)——細(xì)節(jié)、實(shí)現(xiàn),與疑問(wèn)Author:ZX_WING(xing5820@163.com)”

4、內(nèi)核代碼
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
等都是相關(guān)的,可以結(jié)合上面說(shuō)的那個(gè)文檔和系統(tǒng)啟動(dòng)時(shí)的輸出看一下,啟動(dòng)時(shí)輸出的ACPI,apicid,processor那些的都是系統(tǒng)初始化apic的時(shí)候打印輸出的。
在內(nèi)核參數(shù)加上apic=debug可能看到更詳細(xì)的輸出。

5、自己的驅(qū)動(dòng)需要設(shè)置控制apic的時(shí)候,也可以使用系統(tǒng)里面定義的那些函數(shù)咯。在這里有很多函數(shù)聲明,也可以去看一下具體是怎么作的
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/include/asm/apic.h
這里有很多宏的定義,都是和apic的配置有關(guān)的,可以對(duì)應(yīng)看一下intel的文檔。
http://lxr.linux.no/#linux+v2.6.30.5/arch/x86/include/asm/apicdef.h

比如KDB就是用ipi(cpu內(nèi)部中斷)的函數(shù)來(lái)禁止其他cpu的

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

而一般的apic都是通過(guò)下面這兩個(gè)函數(shù)來(lái)進(jìn)行的

apic_wait_icr_idle();
apic_write_around(APIC_ICR2,SET_APIC_DEST_FIELD(x86_cpu_to_apicid[i]));
apic_write(APIC_ICR,icr);//寫(xiě)ICR寄存器,產(chǎn)生ipi中斷

x86_cpu_to_apicid是系統(tǒng)導(dǎo)出的一個(gè)獲取物理apicid的變量,不過(guò)不同的內(nèi)核版本里面實(shí)現(xiàn)有點(diǎn)不同,可以看具體的代碼。apicid是區(qū)分每個(gè)apic的標(biāo)志了,也用于區(qū)分不同的processor的。

希望通過(guò)本文的介紹你能學(xué)會(huì)Linux內(nèi)核里面的APIC編程。

【編輯推薦】

  1. 教會(huì)你輕松Linux網(wǎng)卡安裝
  2. 實(shí)例講解Linux以太網(wǎng)卡的安裝及配置
  3. 全面了解Linux網(wǎng)卡的工作原理
  4. 你了解Linux系統(tǒng)開(kāi)機(jī)知識(shí)么?
  5. 教會(huì)你Linux操作系統(tǒng)實(shí)現(xiàn)email和fax的互轉(zhuǎn)互發(fā)
責(zé)任編輯:小霞 來(lái)源: 中國(guó)水利水電出版社
相關(guān)推薦

2009-12-01 09:51:50

備份Linux內(nèi)核

2010-01-11 09:28:34

C++編程

2009-12-09 14:15:39

2010-03-10 14:48:24

2009-12-02 14:09:52

2009-12-14 10:47:34

Linux makef

2009-11-30 10:54:59

solaris命令

2009-12-10 10:25:12

Linux觸摸屏驅(qū)動(dòng)

2009-12-14 13:14:57

2009-12-21 14:33:11

2009-12-01 18:41:08

SUSE Linux

2009-12-22 15:12:33

Linux擴(kuò)展文件系統(tǒng)

2009-12-23 10:50:57

Linux chmod

2009-12-25 17:15:03

Linux內(nèi)存

2010-01-13 15:51:44

C++編程語(yǔ)言

2010-01-11 10:01:25

C++的編程工具

2009-12-17 09:56:26

Linux添加驅(qū)動(dòng)模塊

2010-01-07 14:39:37

Linux配置遠(yuǎn)程桌面

2010-01-07 13:27:22

Linux驅(qū)動(dòng)程序

2009-12-11 10:02:46

Linux內(nèi)存管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美成人影院 | 久久毛片网站 | 国产精品不卡视频 | 国产精品久久久久久久一区二区 | 日韩不卡在线 | 中文字幕亚洲视频 | 国产69精品久久久久777 | 91欧美| 一区二区三区欧美 | 亚洲成人免费视频 | 午夜视频在线观看网站 | 色婷婷婷婷色 | 国产成人精品a视频一区www | www.狠狠干 | 久久精品亚洲成在人线av网址 | 日韩av高清 | 免费观看的av | 黄网站在线观看 | 国产成人免费视频网站高清观看视频 | 成人在线不卡 | 亚洲欧美在线一区 | 一区二区日本 | 中文字幕欧美在线观看 | 欧美视频在线播放 | 日日天天 | 日本在线黄色 | 奇米av| 亚洲精品久久久 | 精品国偷自产在线 | 国产一区三区在线 | 亚洲国产精品一区二区久久 | 色婷婷综合久久久久中文一区二区 | 国产精品久久久 | 国产 欧美 日韩 一区 | 狠狠爱视频 | 亚洲黄色成人网 | 97视频在线观看网站 | 久久精品国产99国产 | 国产成人福利在线观看 | 神马福利 | 91综合网 |