日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核Kconfig语法

發布時間:2025/3/15 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核Kconfig语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 Kconfig格式

菜單入口 "菜單入口名"[依賴][反向依賴][引入其它Kconfig文件]... ...[幫助]配置項 symbol值類型[輸入提示][默認值][依賴][反向依賴]... ...[幫助]

2 屬性

bool/tristate/int/hex/string

值類型,只有配置選項有值類型。包括: bool——值為y或n、 tristate——值為y或m或n、string——值為字符串、int——值為十進制整數、 hex——值為十六進制整數

prompt "提示字符串" [if <expr>]

輸入提示:每個菜單入口最多只能有一個展示給用戶看的輸入提示,可以使用“if”來表示輸入提示的依賴性,這個依賴性是可選的。

default <expr> [if <expr>]?

默認值:一個配置選項可以有任意多個默認值,但只有第一個有效的。當輸入提示是可見時,才能看到默認值,并且可以輸入一個值將默認值覆蓋。與輸入提示一樣,可以使用“if”來表示默認值的依賴性,這個依賴性是可選的。

def_bool/def_tristate <expr> ["if" <expr>]?

值類型+默認值:說明值類型時同時說明默認值。可以使用“if”來表示默認值的依賴性,這個依賴性是可選的。

requires(或depends on)<expr>,

?依賴: 依賴項給菜單入口或配置項定義了一個依賴規則,只有當expr為真或被選中時,該菜單入口或配置項才有效,依賴對菜單入口或配置項中的其它屬性都有效。

select <symbol> ["if" <expr>]?

反向依賴:當前配置項被選中時,選中symbol,忽略依賴項和手動設置值。只有boolean和tristate類型的symbol可以使用反向依賴。

imply <symbol> [if <expr>]?

弱反向依賴:當前配置項被選中時,選中symbol,但是symbol仍然可由依賴或者手動配置為n。

range <value1> <value2> ["if"<expr>],

?值范圍:限定int和hex類型symbol的輸入值。用戶只能輸入一個大于等于第一個symbol的值,并且小于等于第二個symbol的值。

visible if <expr>?

只能用于menu/endmenu中,當expr為真時菜單可見。

---help---/help?

幫助:定義了一個幫助文本。幫助文本的結尾是根據縮進級別來決定的,這就意味著如果幫助文本中某一行相對于第一行有更小的縮進,那么這一行就是幫助文檔的最后一行?!薄猦elp—”和“help”在使用功能上沒有區別,”—help—”是用來作為對開發者的一種提示,它顯式區別于文檔中的配置選項“help”。

option <symbol>[=<value>]?

其它屬性:各種不常見的選項的通過這個選項來定義,比如修改菜單入口的行為和配置symbol。下面這些配置當前是允許的:

? ? ? ? defconfig_list?
? ? ? ? 定義了一系列默認入口,當使用默認配置時可以從這里尋找(當主.config文件不存在時會使用默認配置)
? ? ? ? modules?
? ? ? ? 聲明了一個symbol將被當做MODULES symbol,MODULES symbol是所有配置symbol的第三種模塊化狀態。
? ? ? ?env=<value>,?
? ? ? ?導入了一個環境變量到Kconfig中。環境變量就像是Kconfig中的一個默認值,但是它是從外部環境中導入的。正因為它從外? ? ? ? ? ?部環境導入,所以賦值的這個時候它相對于正常的默認值來說是沒有定義的。這個symbol當前沒有導出到構建環境中(如果? ? ? ? ?想要這樣的話,可以通過另一個symbol導出)
? ? ? ?allnoconfig_y?
? ? ? ?聲明symol默認值為y。
補充:

值類型后可以緊跟一個輸入提示(也可以單獨使用一個提示屬性),所以下面的這兩個例子是等價的:

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

依賴對菜單入口中的其它屬性都有效,下面兩種寫法是等價的

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

并非每個菜單入口或者配置項都具有所有的屬性。

限制一個配置項只能編譯為模塊或不選擇。

config FOOdependson m

限制一個配置項只能編譯或模塊化

config FOOtristate "foo"select FOO if mdefault m

如果一個配置項只有值類型屬性,則它的選中只能通過其他配置項的select屬性

3 表達式expr

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

表達式以降序的順序排列在下面。

? ? ? ? 1.將一個symbol轉換成表達式。Bool和tristate symbol簡單地轉換成相應的表達式值。其它類型的symbol就轉換成‘n’。
? ? ? ? 2.如果兩個symbol的值相等,就返回‘y’,否則返回‘n’。
? ? ? ? 3.如果兩個symbol的值不相等,就返回‘n’,否則返回‘y’。
? ? ? ? 4.如果symbol1的值小于、大于、小于等于、大于等于symbol2的值返回y,否則返回n。
? ? ? ? 5.返回表達式的值。用來覆蓋之前的值
? ? ? ? 6.返回(2-表達式的值)
? ? ? ? 7.返回min(expr,expr2)
? ? ? ? 8.返回max(expr,expr2)
一個表達式的值可以是’n’,’m’或’y’(或者相對于0,1,2)。當表達式的值是m或者y的時候,菜單入口就是可見的。

存在兩種類型的symbol:常數symbol和非常數symbol。非常數symbol是最常見的一類symbol,定義的時候使用‘config’來聲明。非常數symbol由字母和下劃線組成。

常數symbol只是表達式的一部分。常數symbol通常被單引號或者雙引號包圍著。在引號中,任何字母都是允許的,并且可以使用‘\’進行轉義。

4 菜單入口

主菜單——最頂層的菜單

mainmenu "主菜單名字"

多選菜單——帶配置項但本身不可配置。它的屬性只能是依賴項和可見性。

menu "string"... ... endmenu?

可選菜單——帶配置項且本身是配置項。配置關鍵字前面添加CONFIG_后就構成了“.config”文件中的配置項名字。

menuconfig 配置關鍵字... ...

config——配置項,配置關鍵字前面添加CONFIG_后就構成了“.config”文件中的配置項名字,但不是配置界面顯示的字符,配置界面顯示的是提示字符。

config 配置關鍵字... ...

單選菜單,單選菜單只能是bool類型或tristate類型 ,并且布爾選擇只允許一個單一的配置項被選中,三態選擇還允許任何配置項被設置為“M”。這可以用在下面的情況:如果一個硬件存在多個驅動程序,并且只有一個驅動程序可以編譯/加載到內核中,但所有的驅動程序可以編譯成模塊。

?choice... ...endchoice

注釋,這定義了一條在用戶配置過程中顯示的注釋,同時會寫入導出文件。它的屬性只有依賴項。
?

comment

條件——當expr為真或選中時,中間的內容才有效。

if <expr>... ... endif

引入其他Kconfig文件,方便菜單嵌套。

source "...dir/Kconfig"

5 菜單結構

一種是使用了菜單入口明確指定,如下中所有位于“menu”…和“endmenu”之間的入口都是”Network device support”的一個子菜單入口。所有的子入口都繼承了菜單入口的依賴項,例如,依賴項”NET”就會被加入到子菜單”NETDEVICESx”的依賴項列表中。

menu "Network device support"depends on NETconfig NETDEVICES1...config NETDEVICES2...?menuconfig NETDEVICES3...config NETDEVICES1...config NETDEVICES2...? endmenu

另外一種生成菜單結構的方法是通過分析依賴項。如果一個菜單入口依賴依賴于前一個入口,那么它就是前一個入口的一個子菜單。首先,之前的(父)symbol一定位于子入口的依賴列表中,其次,下面兩個條件中有一個必須是真的:?
子入口必須是不可見的,當父symbol被設置成’n’
子入口必須是可見的,當父菜單是可見的

config MODULESbool"Enable loadable module support" config MODVERSIONSbool"Set version information on all module symbols"dependson MODULES comment "module support disabled"dependson !MODULES

?

總結

以上是生活随笔為你收集整理的linux内核Kconfig语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 探花精品| 中文字幕人妻精品一区 | 91传媒入口 | 欧美成人黄色片 | 欧美黑人狂野猛交老妇 | 91在线播放视频 | 特黄特色大片免费播放器使用方法 | 午夜欧美精品久久久久久久 | 国产又粗又猛又爽又黄又 | 天堂岛av | 亚洲天堂影院在线观看 | 少妇又色又紧又黄又刺激免费 | 不卡中文字幕 | av每日更新在线观看 | 成人性视频网 | 亚洲欧美一区二区三区在线观看 | 97久久精品 | 久色精品视频 | 四虎成人精品在永久免费 | 日本三级黄在线观看 | 精品欧美一区二区久久久 | 国产精品正在播放 | 激情网色 | 一区二区激情 | 国产第一页在线播放 | av动漫网站 | 999精品国产 | 丰满岳跪趴高撅肥臀尤物在线观看 | 日本无遮挡边做边爱边摸 | 人善交videos欧美3d动漫 | 欧美大肚乱孕交hd孕妇 | 国产一级片免费视频 | 亚洲一区二区三区播放 | 性生活三级视频 | 精品久久久久一区二区 | 骚虎tv| 亚洲激情网址 | 中文字幕一二三四 | 国产一区免费在线观看 | 久草手机在线观看 | 久久国产成人精品国产成人亚洲 | 午夜激情毛片 | 亚洲成人高清在线 | 亚洲香蕉在线观看 | 欧美日韩一二 | 激情中文字幕 | 久久九九免费 | 毛片无限看| 99无码熟妇丰满人妻啪啪 | 色网站在线观看 | 欧洲综合色 | 午夜精品国产 | 国产精品夫妻自拍 | 超碰在线看 | 91久久影院 | 老女人毛片 | 黄色激情四射 | 国产中文字幕网 | 农村村妇真实偷人视频 | 亚洲人成电影网 | 亚欧洲乱码视频 | 精品国产一区二区三区四区精华 | 国产精品丝袜黑色高跟鞋 | 欧美色综合 | 成年人午夜 | 国产美女精品人人做人人爽 | 天天弄| 色呦呦视频在线观看 | 高潮喷水一区二区三区 | 床戏高潮做进去大尺度视频 | 亚洲91视频| 国产在线123 | 天天操夜夜摸 | 天天舔天天操 | 鲁鲁在线 | 狠色综合 | 男生操女生逼逼 | 小向美奈子在线观看 | 国产精品无码一区二区无人区多人 | 青青操国产视频 | 亚洲视频一区在线观看 | 性chinese天美传媒麻 | 一级片少妇 | 国产综合在线播放 | 欧美在线中文字幕 | 日日弄天天弄美女bbbb | 欧洲成人一区二区三区 | 天天干天天色 | 美女一区二区视频 | 一区二区三区精品视频 | 在线成人观看 | 一区二区不卡视频在线观看 | 国产av一区不卡 | 91视频在线免费观看 | 国产1区在线观看 | 阿v天堂2018 俄罗斯丰满熟妇hd av色吧 | 狠狠爱夜夜操 | 99久久99久久久精品棕色圆 | 又黄又爽无遮挡 |