<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團(tuán)論壇 http://www.bjzhda.cn

    曙海教育集團(tuán)論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標(biāo)題:linux2.6.x的配置文件kconfig語法

    1樓
    wangxinxin 發(fā)表于:2010-11-15 9:23:26

    linux在2.6版本以后將配置文件由原來的config.in改為kconfig,對于kconfig的語法在/Documentation/kbuild/kconfig-language.txt中做了詳細(xì)的說明,在這里給出kconfig-language.txt的中文版。
    介紹
    ----

    在配置數(shù)據(jù)庫的配置選項(xiàng)是以樹的形式組織的:

       +- Code maturity level options
       | +- Prompt for development and/or incomplete code/drivers
       +- General setup
       | +- Networking support
       | +- System V IPC
       | +- BSD Process Accounting
       | +- Sysctl support
       +- Loadable module support
       | +- Enable loadable module support
       |     +- Set version information on all module symbols
       |     +- Kernel module loader
       +- ...

    每個(gè)選項(xiàng)都有其自己的依賴關(guān)系。這些依賴關(guān)系決定了選項(xiàng)是否是可見的。父選項(xiàng)可見,子選項(xiàng)才能可見。

    菜單選項(xiàng)
    --------

    大多數(shù)的選項(xiàng)都定義了一個(gè)配置選項(xiàng),其它選項(xiàng)則有助于對它們進(jìn)行組織。(原文:Most entries define
    a config option, all other entries help to organize them.)一個(gè)配置選項(xiàng)定義可以是下面
    的形式:

    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. ...

    每行都是以關(guān)鍵字開始,并可以接多個(gè)參數(shù)。"config" 為定義了一新的配置選項(xiàng)。下面的幾行定義了該配置
    選項(xiàng)的屬性。屬性可以是該配置選項(xiàng)的類型,輸入提示(input prompt),依賴關(guān)系,幫助信息和默認(rèn)值。一
    配置選項(xiàng)可以用相同的名字定義多次,但每個(gè)定義只能有一個(gè)輸入提示并且類型還不能沖突。

    菜單屬性
    --------

    一菜單選項(xiàng)可以有多個(gè)屬性。并不要求這些屬性可以用在任何地方(見語法)。

    - 類型定義:"bool"/"tristate"/"string"/"hex"/"int"
    每個(gè)配置選項(xiàng)都必須指定類型。有兩個(gè)基本類型:tristate 和 string,其他類型都是基于這兩個(gè)基本
    類型。類型定義可以用輸入提示,所以下面的兩個(gè)例子是等價(jià)的:

       bool "Networking support"

       bool
       prompt "Networking support"

    - 輸入提示: "prompt" <prompt> ["if" <expr>]
    每個(gè)菜單選項(xiàng)最多只能有一個(gè)顯示給用戶的輸入提示。可以用 "if" 來表示該提示的依賴關(guān)系,當(dāng)然這是
    可選的。

    - 默認(rèn)值:"default" <expr> ["if" <expr>]
    一個(gè)配置選項(xiàng)可以有任意多個(gè)默認(rèn)值。如果有多個(gè)默認(rèn)值,那么只有第一個(gè)被定義的值是可用的。默認(rèn)值并
    不是只限于應(yīng)用在定義他們的菜單選項(xiàng)。這就意味著默認(rèn)值可以定義在任何地方或被更早的定義覆蓋。
    如果用戶沒有設(shè)置(通過上面的輸入提示),配置選項(xiàng)的值就是默認(rèn)值。如果可以顯示輸入提示的話,就會(huì)把
    默認(rèn)值顯示給用戶,并可以讓用戶進(jìn)行修改。
    默認(rèn)值的依賴關(guān)系可以用 "if" 添加。(可選項(xiàng))

    - 依賴關(guān)系:"depends on"/"requires" <expr>
    為一菜單選項(xiàng)定義依賴關(guān)系。如果定義了多個(gè)依賴關(guān)系,它們之間用 '&&' 間隔。依賴關(guān)系也可以應(yīng)用到
    該菜單中所有的其它選項(xiàng)(同樣接受一if表達(dá)式),所以下面的兩個(gè)例子是等價(jià)的:

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

    - 反向依賴關(guān)系:"select" <symbol> ["if" <expr>]
    盡管普通的依賴關(guān)系可以降低一選項(xiàng)的上限,反向依賴能將這一限制降的更低。當(dāng)前菜單選項(xiàng)的值是symbol
    的最小值。如果symbol被選擇了多次,上限就是其中的最大值。
    反向依賴只能用在 boolean 或 tristate 選項(xiàng)上。

    - 數(shù)據(jù)范圍:"range" <symbol> <symbol> ["if" <expr>]
    為int和hex類型的選項(xiàng)設(shè)置可以接受輸入值范圍。用戶只能輸入大于等于第一個(gè)symbol,小于等于第二個(gè)
    symbol的值。

    - 幫助信息: "help" or "---help---"
    定義一幫助信息。幫助信息的結(jié)束就由縮進(jìn)的水平?jīng)Q定的,這也就意味著信息是在第一個(gè)比幫助信息開始行
    的縮進(jìn)小的行結(jié)束。
    "---help---" 和 "help" 在實(shí)現(xiàn)的作用上沒有區(qū)別,"---help---" 有助于將文件中的配置邏輯與
    給開發(fā)人員的提示分開。


    菜單依賴關(guān)系
    ------------

    依賴關(guān)系決定了菜單選項(xiàng)是否可見,也可以減少tristate的輸入范圍。tristate邏輯比boolean邏輯在表
    達(dá)式中用更多的狀態(tài)(state)來表示模塊的狀態(tài)。依賴關(guān)系表達(dá)式的語法如下:

    <expr> ::= <symbol>                             (1)
               <symbol> '=' <symbol>                (2)
               <symbol> '!=' <symbol>               (3)
               '(' <expr> ')'                       (4)
               '!' <expr>                           (5)
               <expr> '&&' <expr>                   (6)
               <expr> '||' <expr>                   (7)

    表達(dá)式是以優(yōu)先級(jí)的降序列出的。

    (1) 將symbol賦給表達(dá)式。boolean和tristate類型的symbol直接賦給表達(dá)式。所有其它類型的symbol
        都賦 'n'。
    (2) 如果兩個(gè)symbol相等,返回'y',否則為'n'。
    (3) 如果兩個(gè)symbol相等,返回'n',否則為'y'。
    (4) 返回表達(dá)式的值。用于改變優(yōu)先級(jí)。
    (5) 返回 (2-/expr/) 的結(jié)果。
    (6) 返回 min(/expr/,/expr/) 的結(jié)果。
    (7) 返回 max(/expr/,/expr/) 的結(jié)果。

    一個(gè)表達(dá)式的值可以是'n','m'或'y'(或者是計(jì)算的結(jié)果 0,1,2)。當(dāng)表達(dá)式的值為'm'或'y'的時(shí)候,菜
    單項(xiàng)才是可見的。

    symbol有兩種類型:不可變的和可變的。不可變的symbol是最普通的,由'config'語句定義,完全由數(shù)字
    、字母和下劃線組成(alphanumeric characters or underscores)。
    不可變的symbol只是表達(dá)式的一部分。經(jīng)常用單引號(hào)或雙引號(hào)括起來。在引號(hào)中,可以使用任何字符,使用引
    號(hào)要用轉(zhuǎn)義字符'\'。

    菜單結(jié)構(gòu)
    --------

    菜單在樹中的位置可由兩種方法決定。第一種可以是這樣:

    menu "Network device support"
       depends NET

    config NETDEVICES
       ...

    endmenu

    所有的在"menu" ... "endmenu" 之間都是"Network device support"的子菜單。所有的子菜單選項(xiàng)
    都繼承了父菜單的依賴關(guān)系,比如,"NET"的依賴關(guān)系就被加到了配置選項(xiàng)NETDEVICES的依賴列表中。

    還有就是通過分析依賴關(guān)系生成菜單的結(jié)構(gòu)。如果菜單選項(xiàng)在一定程度上依賴于前面的選項(xiàng),它就能成為該選
    項(xiàng)的子菜單。首先,前面的(父)選項(xiàng)必須是依賴列表中的一部分并且它們中必須有滿足下面兩個(gè)條件的選項(xiàng):
    - 如果父選項(xiàng)為'n',子選項(xiàng)必須不可見。
    - 如果父選項(xiàng)可見,子選項(xiàng)才能可見。

    config MODULES
       bool "Enable loadable module support"

    config MODVERSIONS
       bool "Set version information on all module symbols"
       depends MODULES

    comment "module support disabled"
       depends !MODULES

    MODVERSIONS 直接依賴 MODULES,這就意味著如果MODULES不為'n',該選項(xiàng)才可見。換句話說,當(dāng)
    MODULES可見時(shí),選項(xiàng)才可見(MODULES的(空)依賴關(guān)系也是選項(xiàng)依賴關(guān)系的一部分)。

    Kconfig 語法
    ------------

    配置文件描述了菜單選項(xiàng),每行都是以一關(guān)鍵字開頭(除了幫助信息)。下面的關(guān)鍵字結(jié)束一菜單選項(xiàng):
    - config
    - menuconfig
    - choice/endchoice
    - comment
    - menu/endmenu
    - if/endif
    - source
    前5個(gè)同樣可以用在菜單選項(xiàng)定義的開始。

    config:

       "config" <symbol>
       <config options>

    定義了一配置選項(xiàng) <symbol> 并且可以接受任何前面介紹的屬性。

    menuconfig:
       "menuconfig" <symbol>
       <config options>

    此關(guān)鍵字和前面的關(guān)鍵字很相似,但它在前面的基礎(chǔ)上要求所有的子選項(xiàng)作為獨(dú)立的行顯示。(This is
    similar to the simple config entry above, but it also gives a hint to front
    ends, that all suboptions should be displayed as a separate list of options.)

    choices:

       "choice"
       <choice options>
       <choice block>
       "endchoice"

    該關(guān)鍵字定義了一組選擇項(xiàng),并且選項(xiàng)可以是前面描述的任何屬性。盡管boolean只允許選擇一個(gè)配置選項(xiàng),
    tristate可以抒多個(gè)配置選項(xiàng)設(shè)為'm',但選項(xiàng)只能是boolean或tristate類型。這可以在一個(gè)硬件有多
    個(gè)驅(qū)動(dòng)的情況下使用,最終只有一個(gè)驅(qū)動(dòng)被編譯進(jìn)/加載到內(nèi)核,,但所有的驅(qū)動(dòng)都可以編譯成模塊。
    選項(xiàng)可以接受的另一個(gè)選項(xiàng)是"optional",這樣選項(xiàng)就被設(shè)置為'n',沒有被選中的。

    comment:

       "comment" <prompt>
       <comment options>

    這里定義了在配置過程中顯示給用戶的注釋,該注釋還將寫進(jìn)輸出文件中。唯一可用的可選項(xiàng)是依賴關(guān)系。

    menu:

       "menu" <prompt>
       <menu options>
       <menu block>
       "endmenu"

    這里定義了一個(gè)菜單,詳細(xì)信息請看前面的"菜單結(jié)構(gòu)"。唯一可用的可選項(xiàng)是依賴關(guān)系。

    if:

       "if" <expr>
       <if block>
       "endif"

    這里定義了if結(jié)構(gòu)。依賴關(guān)系<expr>被加到所有在if ... endif 中的菜單選項(xiàng)中

    本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/jiaguang3010717/archive/2010/08/27/5844687.aspx

    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團(tuán)
    Powered By 曙海教育集團(tuán) Version 2.2
    Processed in .03320 s, 2 queries.
    主站蜘蛛池模板: 日韩在线视频二区| 日本制服丝袜在线| 步兵精品手机在线观看| 男女之间差差差| 激情捆绑国语对白| 欧美日韩一区二区成人午夜电影| 极品丝袜乱系列在线阅读| 日本三级带日本三级带黄国产| 性欧美hd调教| 国产黄大片在线观看| 国产特黄1级毛片| 国产CHINESE男男GAYGAY网站| 伊人五月天综合| 亚洲va久久久噜噜噜久久狠狠| 久久亚洲精品无码AV红樱桃| 一个人免费观看视频在线中文| 7777精品伊人久久久大香线蕉| 舞蹈班的三个小女孩唐嫣| 激性欧美激情在线| 最新国产你懂的在线网址| 成人免费福利视频| 国产色爽免费视频| 国产乱女乱子视频在线播放| 免费观看性生活大片| 亚洲午夜精品在线| 中文字幕专区在线亚洲| 91丁香亚洲综合社区| 精品国产自在在线在线观看| 欧美成人观看视频在线| 日本一区二区三区免费观看| 在线观看免费为成年视频| 国产小视频在线免费| 免费人成在线观看网站品爱网日本| 亚洲午夜精品久久久久久浪潮 | 国产在线视频色综合| 伊人婷婷综合缴情亚洲五月| 乱中年女人伦av三区| z0z0z0另类极品| 色网站免费观看| 欧美精品亚洲精品日韩1818| 新婚熄与翁公试婚小说|