將模組加入核心

2021-09-20 21:23:48 字數 2411 閱讀 1200

可以去看看核心下面的驅動目錄,所有的目錄下面都會包含乙個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狀態 將現有專案下的所有檔案新增到追...