資源描述:
《史上最牛linux內(nèi)核學(xué)習(xí)方法論》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、毫不夸張地說(shuō),Kconfig和Makefile是我們?yōu)g覽內(nèi)核代碼時(shí)最為依仗的兩個(gè)文件?;旧?,Linux內(nèi)核中每一個(gè)目錄下邊都會(huì)有一個(gè)Kconfig文件和一個(gè)Makefile文件。對(duì)于一個(gè)希望能夠在Linux內(nèi)核的汪洋代碼里看到一絲曙光的人來(lái)說(shuō),將它們放在怎么重要的地位都不過(guò)分?! ∥覀?nèi)ハ愀?,通過(guò)海關(guān)的時(shí)候,總會(huì)有免費(fèi)的地圖和各種指南拿,有了它們?cè)谑掷镂覀儾挪恢劣跓o(wú)頭蒼蠅般迷惘的行走在陌生的街道上。即使在內(nèi)地出去旅游的時(shí)候一般來(lái)說(shuō)也總是會(huì)首先找份地圖,當(dāng)然了,這時(shí)就是要去買(mǎi)了,拿是拿不到的,不同的地方有不同的特色,只不過(guò)有的特色是服務(wù),有的特色是索取?! config和Makefil
2、e就是LinuxKernel迷宮里的地圖。地圖引導(dǎo)我們?nèi)フJ(rèn)識(shí)一個(gè)城市,而Kconfig和Makefile則可以讓我們了解一個(gè)Kernel目錄下面的結(jié)構(gòu)。我們每次瀏覽kernel尋找屬于自己的那一段代碼時(shí),都應(yīng)該首先看看目錄下的這兩個(gè)文件?! ±肒config和Makefile尋找目標(biāo)代碼 就像利用地圖尋找目的地一樣,我們需要利用Kconfig和Makefile來(lái)尋找所要研究的目標(biāo)代碼。比如我們打算研究U盤(pán)驅(qū)動(dòng)的實(shí)現(xiàn),因?yàn)閁盤(pán)是一種storage設(shè)備,所以我們應(yīng)該先進(jìn)入到drivers/usb/storage/目錄。但是該目錄下的文件很多,那么究竟哪些文件才是我們需要關(guān)注的?這時(shí)就有必
3、要先去閱讀Kconfig和Makefile文件?! ?duì)于Kconfig文件,我們可以看到下面的選項(xiàng)。configUSB_STORAGE_DATAFABbool"DatafabCompactFlashReadersupport(EXPERIMENTAL)"dependsonUSB_STORAGE&&EXPERIMENTALhelpSupportforcertainDatafabCompactFlashreaders.Datafabhasawebpageat. 顯然,這個(gè)選項(xiàng)和我們的目的沒(méi)有關(guān)系。首先它專(zhuān)門(mén)針對(duì)Datafab公司的產(chǎn)品
4、,其次雖然CompactFlashreader是一種flash設(shè)備,但顯然不是U盤(pán)。因?yàn)閐rivers/usb/storage目錄下的代碼是針對(duì)usbmassstorage這一類(lèi)設(shè)備,而不是針對(duì)某一種特定的設(shè)備。U盤(pán)只是usbmassstorage設(shè)備中的一種。再比如:configUSB_STORAGE_SDDR55bool"SanDiskSDDR-55SmartMediasupport(EXPERIMENTAL)"dependsonUSB_STORAGE&&EXPERIMENTALhelpSayYheretoincludeadditionalcodetosupporttheSandis
5、kSDDR-55SmartMediareaderintheUSBMassStoragedriver. 很顯然這個(gè)選項(xiàng)是有關(guān)SanDisk產(chǎn)品的,并且針對(duì)的是SM卡,同樣不是U盤(pán),所以我們也不需要去關(guān)注?! ∈聦?shí)上,很容易確定,只有選項(xiàng)CONFIG_USB_STORAGE才是我們真正需要關(guān)注的。9configUSB_STORAGE10tristate"USBMassStoragesupport"11dependsonUSB&&SCSI12---help---13SayYhereifyouwanttoconnectUSBmassstoragedevicestoyour14computer'
6、sUSBport.ThisisthedriveryouneedforUSB15floppydrives,USBharddisks,USBtapedrives,USBCD-ROMs,16USBflashdevices,andmemorysticks,alongwith17similardevices.Thisdrivermayalsobeusedforsomecameras18andcardreaders.1920Thisoptiondependson'SCSI'supportbeingenabled,butyou21probablyalsoneed'SCSIdevicesupport:S
7、CSIdisksupport'22(BLK_DEV_SD)formostUSBstoragedevices.2324Tocompilethisdriverasamodule,chooseMhere:the25modulewillbecalledusb-storage. 接下來(lái)閱讀Makefile文件。0#1#MakefilefortheUSBMassStoragedevicedrivers.2#3#15Aug2000,Christ