linux 動態靜態字元裝置註冊

2021-10-24 14:58:50 字數 2404 閱讀 1073

雜項裝置的主裝置號是固定的 是10,當不想固定時,需要自己去申請是靜態裝置註冊,動態的是系統分配

首先來說靜態註冊

#include

/*包含初始化巨集定義的標頭檔案,**中的module_init和module_exit在此檔案中*/

#include

/*包含初始化載入模組的標頭檔案,**中的module_license在此標頭檔案中*/

/*定義module_param module_param_array的標頭檔案*/

#include

/*定義module_param module_param_array中perm的標頭檔案*/

#include

/*三個字元裝置函式*/

#include

#include

#include

#define device_name "sscdev"

#define device_minor_num 2

#define dev_major 0

#define dev_minor 0

module_license

("dual bsd/gpl");

int numdev_major = dev_major;

int numdev_minor = dev_minor;

/*輸入主裝置號*/

module_param

(numdev_major,

int,s_irusr)

;/*輸入次裝置號*/

module_param

(numdev_minor,

int,s_irusr)

;static

intscdev_init

(void

)else

if(ret<0)

printk

(kern_emerg "scdev_init!\n");

/*列印資訊,kern_emerg表示緊急資訊*/

return0;

}static

void

scdev_exit

(void

)module_init

(scdev_init)

;/*初始化函式*/

module_exit

(scdev_exit)

;/*解除安裝函式*/

動態註冊字元裝置

#include

/*包含初始化巨集定義的標頭檔案,**中的module_init和module_exit在此檔案中*/

#include

/*包含初始化載入模組的標頭檔案,**中的module_license在此標頭檔案中*/

/*定義module_param module_param_array的標頭檔案*/

#include

/*定義module_param module_param_array中perm的標頭檔案*/

#include

/*三個字元裝置函式*/

#include

/*mkdev轉換裝置號資料型別的巨集定義*/

#include

/*定義字元裝置的結構體*/

#include

#define device_name "ascdev"

#define device_minor_num 2

#define dev_major 0

#define dev_minor 0

module_license

("dual bsd/gpl");

/*宣告是開源的,沒有核心版本限制*/

int numdev_major = dev_major;

int numdev_minor = dev_minor;

/*輸入主裝置號*/

module_param

(numdev_major,

int,s_irusr)

;/*輸入次裝置號*/

module_param

(numdev_minor,

int,s_irusr)

;static

intscdev_init

(void

)else

if(ret<0)

printk

(kern_emerg "scdev_init!\n");

/*列印資訊,kern_emerg表示緊急資訊*/

return0;

}static

void

scdev_exit

(void

)module_init

(scdev_init)

;/*初始化函式*/

module_exit

(scdev_exit)

;/*解除安裝函式*/

linux字元裝置註冊相關函式

本文介紹linux字元裝置註冊相關的四個函式 cdev alloc cdev init cdev add和cdev del。這四個函式在檔案 fs char dev.c中定義,在標頭檔案include linux cdev.h中宣告。其中cdev alloc和cdev init是一對 互斥 函式,以...

Linux 驅動之字元裝置註冊

目的 給空模組新增驅動殼子 核心工作量 file operations及其元素填充 註冊驅動。腦海裡先有框架,知道自己要幹嘛 細節 不需要乙個字乙個字敲,可以到核心中去尋找參考 複製過來改 寫下的所有 必須心裡清楚明白,不能似懂非懂。先定義file operations結構體變數 自定義乙個file...

字元裝置註冊例項

實驗平台 s5pv210開發板 kernel2.6 功能 驅動三顆led,led1 led2,共用乙個fops,led3單獨使用乙個fops。當open led1 led2 時,led1 和 led2 同時亮,open led3 時,led3亮 release 對應熄滅。include includ...