雜項裝置示例

2021-06-23 08:22:41 字數 1294 閱讀 7896

原理:雜項裝置的misc_init函式中,建立了乙個misc class,同時註冊了乙個字元裝置驅動,該字元裝置的主裝置號為10,在呼叫misc_register函式去註冊乙個雜項裝置時,最終會建立乙個裝置節點,如果雜項裝置的minor為misc_dynamic_minor,表示由系統分配乙個次裝置號。所以雜項裝置最終還是主裝置號為10的乙個字元裝置驅動。

好了,我們看看示例**:

雜項裝置驅動程式:misc_dev.c

#include #include #include #include #define device_name "my_misc_dev"

static int misc_open(struct inode *nd, struct file *filp)

static ssize_t misc_read(struct file *f, char __user *u, size_t sz, loff_t *off)

struct file_operations misc_ops =

;struct miscdevice misc =

;static int demo_init(void)

static void demo_exit(void)

module_init(demo_init);

module_exit(demo_exit);

module_license("gpl");

module_author("huoxin");

module_description("an misc device driver as an example");

#include #include #include #define misc_dev_name "/dev/my_misc_dev"

int main(void)

read(fd, buf, 32);

close(fd);

return 0;

}

編譯misc_dev.c後,insmod對應的驅動模組,發現在/dev目錄下自動建立了my_misc_dev的裝置檔案節點。

執行使用者態程式對應的bin程式,dmesg得到如下列印:

aug 22 08:00:27 xhz-rev-1-0 kernel: [ 2286.814994] misc_open,major=10,minor=55

aug 22 08:00:27 xhz-rev-1-0 kernel: [ 2286.815002] in the misc_read() function!

雜項裝置(misc device)

雜項裝置也是在嵌入式系統中用得比較多的一種裝置驅動。在 linux 核心的include linux目錄下有miscdevice.h檔案,要把自己定義的misc device從裝置定義在這裡。其實是因為這些字元裝置不符合預先確定的字元裝置範疇,所有這些裝置採用主編號10 一起歸於misc devic...

misc雜項裝置驅動

linux裡面的misc雜項裝置是主裝置號為10的驅動裝置,它的註冊跟使用比較的簡單,所以比較適用於功能簡單的裝置。它有自己的裝置結構體 struct miscdevice 它在標頭檔案linux miscdevice.h裡面有定義,其中minor是misc裝置的副裝置號,misc裝置主要依賴min...

雜項裝置實現原理

雜項裝置的原理就是註冊乙個主裝置號,將各種雜類裝置都歸屬於該主裝置號之下。雜項裝置本質上就是字元裝置。static int init misc init void subsys initcall misc init 作為子系統新增到核心 註冊字元裝置的具體實現如下 int register chrd...