核心中用乙個結構體struct cdev
來表示乙個字元裝置struct cdev cdev
,這樣定義後,cdev
就代表乙個字元裝置
字元裝置的載入函式一般完成裝置號和裝置的註冊
裝置號註冊register_chrdev_reg
裝置註冊cdev_add
字元裝置的解除安裝函式unregister_chrdev_region
一般完成裝置號和裝置的登出
裝置登出cdev_del
裝置號登出unregister_chrdev_reg
**示例
#include
#include
struct cdev cdev;
//定義乙個字元裝置
static
int char_major =
250;
//主裝置號
static
int char_mintor =0;
//次裝置號
struct file_operation fops =
//載入函式
static
int __init char_init
(void
)printk
("register_chrdev_region success\n");
//要先初始化init
csdv_init
(&cdev,
&fops)
; cdev.ower = this_module;
//表示這個結構體在那個模組中
//在add
result =
cdev_add
(&cdev,dev,1)
;if(result)
printk
("cdev_add success\n");
return0;
}//解除安裝函式
static
void __exit char_exit
(void
)module_init
(char_init)
;module_exit
(char_exit)
;module_license
("gpl"
);
Linux裝置驅動之字元裝置(三)
在linux裝置驅動之字元裝置 一 中學習了裝置號的構成,裝置號的申請與釋放。在linux裝置驅動之字元裝置 二 中學習了如何建立乙個字元裝置,初始化,已經註冊到系統中和最後釋放該字元裝置。本節將結合前兩節學到的知道,編寫乙個簡單的字元裝置驅動。最後總結一下字元裝置驅動的模型。include inc...
Linux 驅動學習筆記 字元裝置驅動模板 一
驅動入口函式 static int init init void 驅動出口函式 static void exit exit void 將上面兩個函式指定為驅動的入口和出口函式 module init init module exit exit module license gpl 新增協議 modu...
Linux學習 LED字元裝置驅動
應用層去呼叫一些介面函式時,會進入核心,驅動也是核心的一部分。以c庫函式中的open函式為例,open函式的實現繪製行一條swi val指令,執行之後會引發異常 核心的第一層 核心的系統呼叫介面。系統呼叫介面會根據發生異常的原因呼叫不同的異常處理函式,比如sys open函式 核心的第二層 虛擬檔案...