Linux內(nèi)核驅(qū)動程序的配置
腳本1: bool Networking support腳本2: bool prompt Networking support輸入提示的一般格式的如下所示:prompt
默認值的格式如下所示: default
依賴關(guān)系的格式如下所示:depends on (或者 requires)
腳本1: bool foo if BAR default y if BAR腳本2: depends on BAR bool foo default y反向依賴關(guān)系的格式如下所示:select
kbuild Makefile 中的 expr (表達式) 定義如下所示:
幫助信息的格式如下: help(或 ——help——)
開始……
結(jié)束幫助信息完全靠文本縮進識別結(jié)束。——help—— 和 help 在作用上沒有區(qū)別,設(shè)計——help—— 的初衷在于將文件中的配置邏輯與給開發(fā)人員的提示分開。
menuconfig 關(guān)鍵字的作用與 config 類似,但它在 config 的基礎(chǔ)上要求所有的子選項作為獨立的行顯示。
(2)菜單結(jié)構(gòu)菜單入口在菜單樹結(jié)構(gòu)中的位置可由兩種方法決定。第一種方式如下所示:menu Networking device support depends on NET config NETDEVICES……
endmenu所有處于menu 和 endmenu 之間的菜單入口都會成為 Network device support 的子菜單。而且,所有子菜單選項都會繼承父菜單的依賴關(guān)系,比如, Network device support 對 Net 的依賴被加到了配置選項 NETDEVICES 的依賴列表中。
另一種方式是通過分析依賴關(guān)系生成菜單結(jié)構(gòu)。如果菜單選項在一定程度上依賴于前面的選項,它就恩能能成為該選項的子菜單。如果父選項為 N,則子選項不可見;如果父選項為 Y 或 M ,則子選項可見,例如:config MODULES bool Enable loadable module support config MODVERSIONS bool Set version information on all module symbols depends on MODULES comment module support disabled depends on !MODULES MODVERSIONS 直接依賴 MODULES,如果 MODULES 不為 “N,該選項才可見。
除此之外,Kconfig 中還可能使用 “choices……endchoice、comment、if …… endif 這樣的語法結(jié)構(gòu)。其中 choices …… endchoice” 的結(jié)構(gòu)如下所示:choice
4. 應(yīng)用實例:在內(nèi)核中新增加驅(qū)動代碼目錄和子目錄假設(shè)要在內(nèi)核源代碼 drivers 目錄下為 arm 體系結(jié)構(gòu)新增如下用于 test driver 的樹型目錄:|——test |——cpu |——cpu.c |——test.c |——test_client.c |——test_ioctl.c |——test_proc.c |——test_queue.c在內(nèi)核中增加目錄和子目錄,我們需為相應(yīng)的新增目錄創(chuàng)建 Kconfig 和 Makefile 文件,而新增目錄的父目錄中的 Kconfig 和 Makefile 文件愛也需要修改,以便新增的 Kconfig 和 Makefile 文件能被引用。
在新增的 test 目錄下,應(yīng)該包含如下 Kconfig 文件:# #Test driver configuration # menu TEST Driver comment TEST Driver config CONFIG_TEST bool TEST support config CONFIG_TEST_USER tristate TEST user-space interface depends on CONFIG_TEST endmenu由于 TEST_driver 對于內(nèi)核來說是新的功能,所以首先需要創(chuàng)建一個菜單 TEST Driver;然后顯示 TEST support,等待用戶選擇;接下來判斷用戶是否選擇了 TEST Driver,如果是(CONFIG_TEST=y),則進一步顯示子功能:用戶接口與CPU 功能:用戶接口與CPU 功能支持;由于用戶接口功能可以被編譯成內(nèi)核模塊,所以這里的詢問語句使用了 tristate.為了使這個 Kconfig 文件能起作用,需要修改 arch/arm/Kconfig 文件,增加以下內(nèi)容:source driver/test/Kconfig腳本中的 source 意味著引用新的 Kconfig 文件。
評論