Linux 2 6 核心驅動移植

2021-08-22 04:19:18 字數 2100 閱讀 8598

隨著

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...