可以去看看核心下面的驅動目錄,所有的目錄下面都會包含乙個makefile和乙個kconfig。這個kconfig的作用就是在執行make menuconfig的時候會從中讀出相應的選單,makefile自然是編譯指令碼了。
我們準備在drivers目錄下面新增我們的hello模組,首先我們為我們的模組需要新增乙個配置項。
1、在drivers下面加入乙個hello模組的配置項
在drivers下面新增乙個hello目錄,目錄結構為
kconfig**如下:
menu "hello module"
comment "hello modules"
config config_hello_module
bool "support hello module"
default y
endmenu
注意:endmenu下面要空一行,不然會報錯的然後在drivers目錄下的kconfig檔案加上:source 「drivers/hello/kconfig」,最後在原始碼目錄下執行sudo make menuconfig。
選單截圖和kconfig**釋義:
menu和endmenu是對應的,是選單結構,具體在ui中的體現如下
commont是注釋,新增一下說明文字的
config是選單入口,宣告乙個配置項,乙個menu下面可以有多個config
bool表示是布林型別,供選擇的型別還有tristate、string、hex、int
default y表示的預設是選中的,選中的情況下核取方塊為[*],未選中的情況為
下面會介紹其他的幾種kconfig的用法
1、配置項依賴另乙個配置項(depends on)
menu "hello module"
comment "hello modules"
config config_add_sub_module
bool "support add_sub module"
default n
config config_hello_module
bool "support hello module"
depends on config_add_sub_module
default y
endmenu
這個kconfig中config_hello_module模組依賴config_add_sub_module,也就是只有當config_add_sub_module選中的時候,config_hello_module才可以被選中
未選中的時候config_hello_module沒有顯示在ui上
2、其他資料型別(string/tristate/hex/int)
menu "hello module"
comment "hello modules"
config config_string
string "support string module"
default "hello"
config config_tristate
tristate "support tristate module"
default m
config config_hex
hex "support hex module"
default 0x11
config int
int "support int module"
default 666
endmenu
string型別可以輸入乙個字串
tristate型別是三態配置選項,可以選擇m y n,選項為y的時候表示編譯進核心,為m的時候表示編譯為模組,為n的時候表示不編譯
hex型別可以輸入16進製制數
int型別可以輸入整型
Linux核心模組程式設計 將 proc作為輸入
迄今為止,我們有兩中辦法從核心模組中產生輸出 我們可以登記乙個裝置驅動程式並 mknod 乙個裝置檔案,或者我們可以建立乙個 proc檔案。這可以讓核心模組告訴我們任何它可能告訴我們的事情。唯一的問題是這沒有辦法讓我們告訴它。我們將輸入傳送給核心模組的第乙個辦法將是通過寫回 proc 檔案。因為 p...
如何批量將介面加入VLAN
通過埠組可以把介面批量加入vlan。對於access介面,還可以在vlan檢視下直接批量將介面加入vlan。將介面eth2 0 1 eth2 0 5批量加入vlan10。huawei port group pg1 huawei port group pg1 group member ethernet...
git 將現有專案加入osChina
將現有專案加入oschina 在oschina中建立專案 注意不要初始化專案。其實初始化也沒有什麼問題,可以直接clone到本地,再把專案新增進去就行了,後續操作一樣的 專案現在基本為空,得到專案的遠端位址。找到現有專案,切換到現有專案目錄 呼叫初始化方法 git狀態 將現有專案下的所有檔案新增到追...