簡單的核心模組**示例:
/*
* 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 答 參加培訓的申請人 參加培訓的專案和目的 ...