驅動與執行module
一、驅動是什麼?
驅動提供的是機制而非策略。
二、可載入模組(.ko)
每個模組由目標**組成( 沒有連線成乙個完整可執行檔案 ), 可以動態連線到執行中的核心中, 通過 insmod 程式, 以及通過 rmmod 程式去連線。
三、建立模組
在建立模組中,呼叫的函式必須是核心自帶函式。
module_init()
module_exit()
四、編譯模組
hello模組的makefile如下:
obj-m:=hello.o
modules:
make -c /lib/modules/`uname -r`/build/m='pwd' modules
make clean
clean:
rm -f .......
需要注意的幾點:
1、·uname -r· 是用來查詢當前核心版本號
obj-m := module.o
module-objs := file1.o file2.o
五、補充
1、指定模組的初始化和清理函式的巨集定義.
__init
__initdata
__exit
__exitdata
函式( __init 和 __exit )和資料 (__initdata 和 __exitdata)的標記, 只用在模組初始化或者清理時
間. 為初始化所標識的項可能會在初始化完成後丟棄; 退出的項可能被丟棄如果核心沒有配
置模組解除安裝. 這些標記通過使相關的目標在可執行檔案的特定的 elf 節裡被替換來工作.
2、module_init()與 module_exit()
在資料段中分配特有的init段和exit段,用來存放_init與_exit函式
可以使用__attribute__((__section__(".init"))),將其加在函式或變數前,就可以指定該函式或變數存放到init段中
3、帶有兩個下劃線的函式如__attribute__,為底層函式
回宿舍
驅動程式module的工作流程
驅動程式module的工作流程主要分為四個部分 1 insmod module 2 驅動module的初始化 初始化結束後即進入 潛伏 狀態,直到有系統呼叫 3 當操作裝置時,即有系統呼叫時,呼叫驅動module提供的各個服務函式 4 rmmod module 一 驅動程式的載入 linux驅動程式...
Function與Module的差異與應用場景
function與module都可以對pytorch進行自定義拓展,使其滿足網路的需求,但這兩者還是有十分重要的不同 function一般只定義乙個操作,因為其無法儲存引數,因此適用於啟用函式 pooling等操作 module是儲存了引數,因此適合於定義一層,如線性層,卷積層,也適用於定義乙個網路...
Function與Module的差異與應用場景
function與module都可以對pytorch進行自定義拓展,使其滿足網路的需求,但這兩者還是有十分重要的不同 function一般只定義乙個操作,因為其無法儲存引數,因此適用於啟用函式 pooling等操作 module是儲存了引數,因此適合於定義一層,如線性層,卷積層,也適用於定義乙個網路...