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