驅動程式的引數值可由in**od或者modprobe在裝載模組時設定,後者還可以從配置檔案(/etc/modules.conf)中獲得引數賦值。這些命令能夠在命令列中接受整型和字串型賦值。如:模組需要獲得乙個叫做skull_ival的整型引數和乙個叫做skull_sval的字串型引數:
in**od skull skull_ival=666 skull_sval="the beast"
當然,模組必須能夠訪問這些引數。引數由定義在module.h中的巨集module_parm宣告,它必須包含:變數名和描述變數型別的字串。放在原檔案的起始位置
int skull_ival=0;
char *skull_val;
module_parm(skull_ival,"i");
module_parm(skull_sval,"s");
五種型別:b,乙個位元組byte;h,短整型 兩個byte;i,整型;l 長整型;s,字串。
作為乙個例子,至少有兩個元素、最多不超過4個元素的陣列可定義為:
int skull_array[4];
module_parm(skull_array,"2-4i");
還有乙個module_parm_desc的巨集,允許開發者為模組引數提供描述性文字,描述性文字儲存在目標檔案中,能夠用類似objdump的工具檢視:
int base_port = 0x300;
module_parm(base_port,"i");
module_parm_desc(base_port,"the base i/o port(default 0x300)");
#include
void *kmalloc(unsigned int size,int priority);
void kfree(void *obj);
函式malloc和free的核心版。使用gfr_kernel作為priority引數值。
《linux裝置驅動程式》讀書筆記
這也算是一本神書了,12年買了,13年看完了,後來一直嫌棄著,今天當好有空,整理一下筆記,也算是溫故知新了。這個做linux驅動開發必看的書記,我這個是第三版本,核心版本是2.6版本的。這章不重要,過 講如何獲取原始碼,如何編譯一核心,過 核心開發的特點,這個還是比較好的 第3章 程序管理 第4章 ...
LINUX裝置驅動程式筆記
1.核心功能劃分 程序管理,記憶體管理,檔案系統,裝置控制,網路。裝置的分類 字元裝置,塊裝置,網路介面。單個原始檔編譯模組 obj m hello.o 多個原始檔編譯模組 obj m module.o module objs file1.o file2.o make c kernel 2.6 m ...
linux裝置驅動程式 字元裝置驅動程式
先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...