2009年10月24日 星期六

如何撰寫在kernel的原始碼中的Kconfig

在整個的kernel source code中是一個非常有模組化的管理,而其中在2.6.x之後使用一種檔設定來管理選擇那些是要static link至kernel,而那些要是要模組化,而其檔名為Kconfig,其散佈在各個原始碼的目錄中,而在這個檔中將會描述各個模組的名稱及可以設定yes, no or module, 它也可以像c語言一樣可以include其它的Kconfig,當你在原始碼的目錄之下執行'make menuconfig'將可以看到以下的書面 :













其中有幾個基本的語法指令如下:
#用這個#開頭的這一行表示為註解,不會有任何作用

comment "這是選單上的說明文字, 無法選擇"

menu "這是一個選單的項目,你可以在定義你的選單名稱,將會和後面的endmenu成為一對"
source "這是引用另一個Kconfig的檔案"
........
endmenu

config USER_DEFINE_NAME #設定完之後將會使用這個名字在前面再加CONFIG_
bool "這個訊息將會被顯示出來,而前面的bool代表是為布林,表示這個選項只有Yes or No的選擇“
depend on OTHER_ITEM #這邊可以使用和C語言相同的邏輯運算,且在這個運算為真時這個選項才可以被選
select OTHER_ITEM #當這個選項USER_DEFINE_NAME為真時,OTTHER_ITEM也會同時被設定
default y #這是設定default value
--- help ---
這是說明文字,可有可無。

在以上bool的設定還有以下設定選項
tristate "這個選項會有三種可以,就是Yes, No or Module,多了一個選項為可以用模組的方式來編繹,所以這通常是在設定驅動程式時所用"
int "這應不難看出是在設定一個數值,可以和另一個設定range來檢查輸入所要的數值範圍是否正確"

以上是常用到的設定選項,其餘還有則較不常用,通常熟悉以上的選項就夠用了。
string "這是可以輸入字串的設定選項"

沒有留言:

張貼留言