包括主裝置號和次裝置號
•字元裝置函式在檔案
「include/linux/fs.h」中
•核心提供了三個函式來註冊一組字元裝置編號,這三個函式分別是
–register_chrdev_region()
–alloc_chrdev_region()
–register_chrdev()
•register_chrdev_region()
是提前知道裝置的主次裝置號
,再去申請裝置號。•
alloc_chrdev_region()
是動態分配主次裝置號。
•register_chrdev()
。是老版本的裝置號註冊方式,只分配主裝置號。從
裝置號在
mknod
的時候指定。
•巨集定義
mkdev
的標頭檔案
「include/linux/kdev_t.h」–
在kdev_t.h
標頭檔案中有一系列裝置號處理的巨集命令,用於處理各種裝置號
相關的資料。
•include/linux/cdev.h
–cdev
型別是是字元裝置描述的結構
–其中的裝置號必須用
「dev_t
」型別來描述,高
12位為主裝置號,低
20位為
次裝置號
載入執行
–使用命令
「cat /proc/devices
」檢視已經被註冊的主裝置,裝置號
9沒有被註冊–
insmod /mnt/udisk/request_cdev_num.ko numdev_major=9 numdev_minor=0
–使用命令
「cat /proc/devices
」檢視,裝置號
9被註冊為
scdev
–rmmod request_cdev_num numdev_major=9 numdev_minor=0
#include
#include /*module license gpl 申明*/
#include //包含 register_chrdev_region(); alloc_chrdev_region() unregister_region();
#include //包含mkdev
#include //包含dev_t
#include //定義module_param module_param_array的標頭檔案
#include
#define device_name "fxq_dev"
#define device_minor_num 2
#define dev_major 0
#define dev_minor 0
module_license("dual bsd/gpl");
module_author("fxq");
static int module_arg1,module_arg2;
static int int_array[50];
static int int_num;
int numdev_major=dev_major;//主裝置號
int numdev_minor=dev_minor;//次裝置號
//引數傳遞
//引數,引數型別,所有者許可權
//輸入主裝置號,次裝置號
module_param(numdev_major,int,s_irusr);
module_param(numdev_minor,int,s_irusr);
//module_param_array(int_array,int,&int_num,s_irusr);
static int fxq_dev_init(void)
else
if(ret<0)
return 0;
}static void fxq_dev_exit(void)
module_init(fxq_dev_init);/*初始化函式*/
module_exit(fxq_dev_exit);
/*解除安裝函式*/
註冊:檢視:
解除安裝:
靜態申請字元類裝置號
字元裝置函式在檔案 include linux fs.h 中 核心提供了三個函式來註冊一組字元裝置編號,這三個函式分別是 register chrdev region alloc chrdev region register chrdev register chrdev region 是提前知道裝置...
動態申請字元類裝置號
字元裝置函式在檔案 include linux fs.h 中 alloc chrdev region 是動態分配主次裝置號 巨集定義major提取dev t資料中的主裝置號 編寫,編譯 測試原始碼 include 包含初始化巨集定義的標頭檔案,中的module init和module exit在此檔...
字元裝置驅動 靜態 動態申請裝置號
靜態裝置號申請 申請裝置號,from 要申請的裝置號,count 申請幾個裝置,name 裝置名字 int register chrdev region dev t from,unsigned count,const char name 登出裝置號,from 要登出的裝置號,count 登出幾個裝置...