一、模組載入函式:
(必須)
module_init(initialization_funciton);
二、模組解除安裝函式:
(必須)
module_exit(cleanup_function);
三、模組引數:
module_param(引數名,引數型別,引數讀/寫許可權)
在模組插入時: insmod
模組名
引數名=引數值
eg:
static char *book_name = " Linux 裝置驅動 ";
static
int num = 4000;
module_param(num, int , S_IRUGO);
module_param(book_neme ,charp, S_IRUGO);
引數型別:
byte, short, ushort, int uint, long , ulong, charp(字元指標), bool,
四、匯出符號
(建議有)
EXPORT_SYMBOL( 符號名/函式名)
EXPORT_SYMBOL_GPL(符號名 /函式命)
五、模組宣告
MODULE_LICENSE(" Dual BSD/GPL ");
MODULE_AUTHOR (" XXXXX");
MODULE_DESCRIPTION("XXXXX DRIVER");
MODULE_VERSION(" XXXX VERSION");
MODULE_DEVICE_TABLE(TABLE_INFO);
MODULE_ALISA(XXXXXXX);
六、驅動模組的編譯
開發好的模組程式可以和核心一起編譯,也就是將模組編譯進核心,也可以將模組單獨編譯成一個獨立的模組。
一、模組載入函式:
(必須)
module_init(initialization_funciton);
二、模組解除安裝函式:
(必須)
module_exit(cleanup_function);
三、模組引數:
module_param(引數名,引數型別,引數讀/寫許可權)
在模組插入時: insmod
模組名
引數名=引數值
eg:
static char *book_name = " Linux 裝置驅動 ";
static
int num = 4000;
module_param(num, int , S_IRUGO);
module_param(book_neme ,charp, S_IRUGO);
引數型別:
byte, short, ushort, int uint, long , ulong, charp(字元指標), bool,
四、匯出符號
(建議有)
EXPORT_SYMBOL( 符號名/函式名)
EXPORT_SYMBOL_GPL(符號名 /函式命)
五、模組宣告
MODULE_LICENSE(" Dual BSD/GPL ");
MODULE_AUTHOR (" XXXXX");
MODULE_DESCRIPTION("XXXXX DRIVER");
MODULE_VERSION(" XXXX VERSION");
MODULE_DEVICE_TABLE(TABLE_INFO);
MODULE_ALISA(XXXXXXX);
六、驅動模組的編譯
開發好的模組程式可以和核心一起編譯,也就是將模組編譯進核心,也可以將模組單獨編譯成一個獨立的模組。