linux 靜態申請字元類裝置號

2021-08-17 10:30:40 字數 2332 閱讀 6357

包括主裝置號和次裝置號

•字元裝置函式在檔案

「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 登出幾個裝置...