Linux設備驅動3快速參考匯總--建立和運行模塊
時間:2016-12-30作者:華清遠見
insmod 用戶空間工具, 加載模塊到運行中的內核以及去除它們.
#include <linux/init.h> 指定模塊的初始化和清理函數的宏定義.
__init 函數( __init 和 __exit )和數據 (__initdata 和 __exitdata)的標記, 只用在模塊初始化或者清理時間. 為初始化所標識的項可能會在初始化完成后丟棄; 退出的項可能被丟棄如果內核沒有配置模塊卸載. 這些標記通過使相關的目標在可執行文件的特定的 ELF 節里被替換來工作. #include <linux/sched.h> 重要的頭文件中的一個. 這個文件包含很多驅動使用的內核 API 的定義, 包括睡眠函數和許多變量聲明. struct task_struct *current; 當前進程.
current->pid 進程 ID 和 當前進程的命令名. obj-m 一個 makefile 符號, 內核建立系統用來決定當前目錄下的哪個模塊應當被建立.
/sys/module vermagic.o
來自內核源碼目錄的目標文件, 描述一個模塊為之建立的環境.
必需的頭文件. 它必須在一個模塊源碼中包含.
頭文件, 包含在建立的內核版本信息.
整型宏定義, 對 #ifdef 版本依賴有用.
宏定義, 用來輸出一個符號給內核. 第 2 種形式輸出沒有版本信息, 第 3 種限制輸出給 GPL 許可的模塊.
放置文檔在目標文件的模塊中.
宏定義, 聲明一個模塊的初始化和清理函數.
宏定義, 創建模塊參數, 可以被用戶在模塊加載時調整( 或者在啟動時間, 對于內嵌代碼). 類型可以是 bool, charp, int, invbool, short, ushort, uint, ulong, 或者 intarray. 內核代碼的 printf 類似物. 相關資訊
發表評論
|