Kconfig語法簡介


背景:

  上篇文章《添加自己的驅動程序到Linux內核樹中》簡單介紹了在Linux內核配置中添加自己的驅動選項。但是僅靠如此簡單的配置有時候不能滿足我們的要求。

Target    :hi3531d

Linux    :Linux-3.18

有關概念

每個選項都有其自己的依賴關系。這些依賴關系決定了選項是否是可見的。父選項可見,子選項才能可見。

單一選項 config
原則:每一個config就是一個選項,最上面跟着控制句柄,下面則是對這個選項的配置,如選項名是什么,依賴什么,選中這個后同時會選擇什么。

大多數的選項都定義了一個配置選項,其它選項則有助於對它們進行組織。(Most entries definea config option, all other entries help to organize them.)

一個配置選項定義可以是下面的形式:

config MODVERSIONS
   bool "Set version information on all module symbols"
   depends MODULES
   help
      Usually, modules have to be recompiled whenever you switch to a new
      kernel. ...

"config" ,配置選項。而它下面的幾行定義了該配置選項的屬性。

屬性可以是該配置選項的類型,輸入提示(input prompt),依賴關系,幫助信息和默認值。

配置選項可以用相同的名字定義多次,但每個定義只能有一個輸入提示並且類型還不能沖突。

"bool" ,類型定義"bool"/"tristate"/"string"/"hex"/"int"

每個配置選項都必須指定類型。有兩個基本類型:tristate 和 string,其他類型都是基於這兩個基本類型。

類型定義可以用輸入提示,所以下面的兩個例子是等價的:

   bool "Networking support"
和
   bool
   prompt "Networking support"

"depends on", 依賴關系"depends on"/"requires" <expr>
為菜單選項定義依賴關系。如果定義了復雜的邏輯依賴關系系,它們之間用 '&&','||','('與')' 間隔。

依賴關系也可以應用到該菜單中所有的其它選項(同樣接受一if表達式),所以下面的兩個例子是等價的:

   bool "foo" if BAR
   default y if BAR
和
   depends on BAR
   bool "foo"
   default y

**"select", 反向依賴關系,語法為:**"select" <symbol> ["if" <expr>]

反向依賴只能用在 boolean 或 tristate 選項上。

當前選項選中后則select后指定的選項自動被選擇。

盡管普通的依賴關系可以降低一選項的上限,反向依賴能將這一限制降的更低。

當前菜單選項的值是symbol的最小值。如果symbol被選擇了多次,上限就是其中的最大值。

"default", 默認值"default" <expr> ["if" <expr>]
一個配置選項可以有任意多個默認值。如果有多個默認值,那么只有第一個被定義的值是可用的。

默認值並不是只限於應用在定義他們的菜單選項。這就意味着默認值可以定義在任何地方或被更早的定義覆蓋。

如果用戶沒有設置(通過上面的輸入提示),配置選項的值就是默認值。如果可以顯示輸入提示的話,就會把默認值顯示給用戶,並可以讓用戶進行修改。

默認值的依賴關系可以用 "if" 添加。(可選項)

**菜單 menu
**

menu條目用於生成菜單,格式如下:

menu "Floating poing emulation"
        config FPE_NWFPE
        ..............
        config FPE_NWFPE_XP
        .............
endmenu

menu之后的字符串是菜單名,menu和endmenu之間有很多config條目(待會說介紹config條目),在配置界面上會出現如下字樣的菜單,移動光標選中它之后按回車進入,就會看到config條目定義的配置選項。

Floating point emulation  --->
           [] FPE_NWFPE
           [] FPE_NWFPE_XP

選擇框 choice
choice條目將多個類似的配置選項組合在一起,供用戶單選或者多選。

choice
    prompt "arm system type"
    default arch_versatile
config arch_aarc200
    ...
config arch_integrator
    ...
endchoice

prompt后面跟的是提示信息,光標選中它后按回車鍵進入,就可以看到多個config條目定義的配置選項。
條目中定義的變量類型只能有兩種:bool和tristate,不能同時有這兩種類型的變量。

對於bool類型的choice條目,只能在多個選項中選擇一個;

對於tristate類型的choice條目,要么就把多個選項都設為m;要么就像bool類型的choice條目一樣,只能選擇一個。

**提示文本 comment
**

comment條目定義了一些幫助信息,它在配置過程中出現在界面的第一行;並且這些幫助信息會出現在配置文件中,格式如下:

comment <prompt>
<comment options>

例如:

menu "floating point emulation"
comment "At least one emultaion must be selected"
...

引入配置 source

source條目用於讀入另一個Kconfig文件,格式如下:

source <promt>

例如:

source "net/Kconfig"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM