隨著
linux
2.6的發布,由於2.6核心做了教的改動,各個裝置的
驅動程式在不同程度上要進行改寫。為了方便各位linux愛好者我把自己整理的這分文件share出來。該文當列舉了2.6核心同以前版本的絕大多數變化,可惜的是由於時間和精力有限沒有詳細列出各個函式的用法。
1、 使用新的入口
必須包含
module_init(your_init_func);
module_exit(your_exit_func);
老版本:int init_module(void);
void cleanup_module(voi);
2.4中兩種都可以用,對如後面的入口函式不必要顯示包含任何標頭檔案。
2、 gpl
module_license("dual bsd/gpl");
老版本:module_license("gpl");
3、 模組引數
必須顯式包含
module_param(name, type, perm);
module_param_named(name, value, type, perm);
引數定義
module_param_string(name, string, len, perm);
module_param_array(name, type, num, perm);
老版本:module_parm(variable,type);
module_parm_desc(variable,type);
4、 模組別名
module_alias("alias-name");
這是新增的,在老版本中需在/etc/modules.conf配置,現在在**中就可以實現。
5、 模組計數
int try_module_get(&module);
module_put();
老版本:mod_inc_use_count 和 mod_dec_use_count
6、 符號匯出
只有顯示的匯出符號才能被其他模組使用,預設不匯出所有的符號,不必使用export_no_symbols
老闆本:預設匯出所有的符號,除非使用export_no_symbols
7、 核心版本檢查
需要在多個檔案中包含時,不必定義__no_version__
老版本:在多個檔案中包含時,除在主檔案外的其他檔案中必須定義__no_version__,防止版本重複定義。
8、 裝置號
kdev_t被廢除不可用,新的dev_t拓展到了32位,12位主裝置號,20位次裝置號。
unsigned int iminor(struct inode *inode);
unsigned int imajor(struct inode *inode);
老版本:8位主裝置號,8位次裝置號
int major(kdev_t dev);
int minor(kdev_t dev);
9、 記憶體分配標頭檔案變更
所有的記憶體分配函式包含在標頭檔案,而原來的不存在
老版本:記憶體分配函式包含在標頭檔案
10、 結構體的初試化
gcc開始採用ansi c的struct結構體的初始化形式:
static struct some_structure = ;
老版本:非標準的初試化形式
static struct some_structure = ;
11、 使用者模式幫助器
int call_usermodehelper(char *path, char **argv, char **envp,
int wait);
新增wait引數
12、 request_module()
request_module("foo-device-%d", number);
老版本:
char module_name[32];
printf(module_name, "foo-device-%d", number);
request_module(module_name);
Linux 2 6核心驅動之hello模組
終於開始在鍾愛的linux上學習寫驅動程式了。本來以為寫乙個hello模組是異常簡單的事情,結果折騰了幾天才編譯通過。首先為了測試安裝了虛擬機器 核心程式是很危險滴,我可不想讓自己的愛本頻繁崩潰 裝fedora17 fedora18的live版在虛擬機器上始終跑不起來 來回來去幾次也裝不上virtu...
Linux 2 6 驅動模板
obj m vs10xx.o vs10xx objs vs10xx.o kerneldir home kerson linux 2.6.39 pwd shell pwd modules make c kerneldir m pwd modules cp vs10xx.ko armnfs phony ...
Linux 2 6核心編譯,核心公升級
本文描述了在fc8下公升級linux核心為2.6.25的詳細步驟.1.首先從如下 得到linux 2.6.25.2.然後在 usr src下untar這個包.tar xjfv linux 2.6.25.tar.bz2 3.配置核心 cd usr src linux 2.6.25 make mrpro...