Linux驅動開發 第三章 Linux核心模組概述

2021-10-16 13:21:31 字數 1686 閱讀 6017

簡單的核心模組**示例:

/*

* a ****** kernel module: hello

* ** licensed under gplv2 or later.

*/#include

#include

static

int __init hello_init

(void

)module_init

(hello_init)

;static

void __exit hello_exit

(void

)module_exit

(hello_exit)

;module_author

("barry song <[email protected]>");

module_license

("gpl v2");

module_description

("a ****** hello world module");

module_alias

("a ******st module"

);

1、常用模組控制指令

2、核心模組的程式結構

static

int __init hello_init

(void

)module_init

(hello_init)

;

在linux核心中,可以使用request_module(const char*fmt,…)函式載入核心模組,驅動開發人員可以通過呼叫下列**載入其他模組:

request_module

(module_name)

;

在linux中,所有標識為__init的函式如果直接編譯進入核心,成為核心映象的一部分,在連線的時候都會放在.init.text這個區段內。

所有的__init函式在區段.initcall.init中還儲存了乙份函式指標,在初始化時核心會通過這些函式指標呼叫這些__init函式,並在初始化完成後,釋放init區段(包括.init.text、.initcall.init等)的記憶體。

我們用__exit來修飾模組解除安裝函式,可以告訴核心如果相關的模組被直接編譯進核心(即built-in), 則cleanup_function()函式會被省略,直接不鏈進最後的映象

模組引數同時可以是使用者在裝載核心模組時傳入的值,呼叫命令形式為:insmod [模組名引數名]=[引數值]如果不傳遞,引數將使用模組內定義的預設值。如果模組被內建,就無法insmod了,但是bootloader可以通過在bootargs裡設定「模組名.引數名=值」的形式給該內建的模組傳遞引數。

模組被載入後,在/sys/module/目錄下將出現以此模組名命名的目錄。當「引數讀/寫許可權」為0時,表示此引數不存在sysfs檔案系統下對應的檔案節點,如果此模組存在「引數讀/寫許可權」不為0的命令列引數,在此模組的目錄下還將出現parameters目錄,其中包含一系列以引數名命名的檔案節點,這些檔案的許可權值就是傳入module_param()的「引數讀/寫許可權」,而檔案的內容為引數的值。

第三章 UI開發

alertdialog可以在當前的介面彈出乙個對話方塊,這個對話方塊是置頂於所有介面元素之上的,能夠遮蔽掉其他控制項的互動能力,因此一般 alertdialog都是用於提示一些非常重要的內容或者警告資訊。public class mainactivity extends activity imple...

Linux複習第三章

第三章 系統管理 1 linux系統中的使用者大體上可分為三組,分別為 管理員 普通使用者和 系統使用者 r itheima。刪除使用者的命令為userdel 選項 r會在刪除使用者的同時,刪除與使用者相關的檔案。因此本題的答案為 userdel r itheima。3 在linux系統中用於切換使...

第三章 培訓與開發

1 答 1 受訓員工的現狀,即他們在組織中的位置,以及以前是否受過培訓 受過什麼樣的培訓 培訓的形式有哪些等問題。2 受訓員工存在的問題。3 受訓員工的期望和真實想法。4 仔細分析收集到的調查資料,從中找出培訓需求,並注意個別需求與普遍需求之間的關係。2 答 參加培訓的申請人 參加培訓的專案和目的 ...