日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux驱动:自动创建设备节点

發(fā)布時(shí)間:2023/12/15 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux驱动:自动创建设备节点 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在加載驅(qū)動(dòng)模塊后,就要自己使用mknod創(chuàng)建設(shè)備節(jié)點(diǎn),這樣雖然是可行的,但是比較麻煩。我們可以在__init()函數(shù)里面添加一些函數(shù),自動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)。創(chuàng)建設(shè)備節(jié)點(diǎn)使用了兩個(gè)函數(shù)?class_create()和device_create(),當(dāng)然在__exit()函數(shù)里,要使用class_destory()和device_desotry()注銷創(chuàng)建的設(shè)備節(jié)點(diǎn)。

?

1. 函數(shù)說明

struct device *device_create(struct class *class, struct device *parent, dev_t devt, const char *fmt, ...)struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)

在驅(qū)動(dòng)用加入對(duì)udev的支持主要做的就是:在驅(qū)動(dòng)初始化的代碼里調(diào)用class_create(...)為該設(shè)備創(chuàng)建一個(gè)class,再為每個(gè)設(shè)備調(diào)用device_create(...)( 在2.6較早的內(nèi)核中用class_device_create)創(chuàng)建對(duì)應(yīng)的設(shè)備。

內(nèi)核中定義的struct class結(jié)構(gòu)體,顧名思義,一個(gè)struct class結(jié)構(gòu)體類型變量對(duì)應(yīng)一個(gè)類,內(nèi)核同時(shí)提供了class_create(…)函數(shù),可以用它來創(chuàng)建一個(gè)類,這個(gè)類存放于sysfs下面,一旦創(chuàng)建好了這個(gè)類,再調(diào)用 device_create(…)函數(shù)來在/dev目錄下創(chuàng)建相應(yīng)的設(shè)備節(jié)點(diǎn)。這樣,加載模塊的時(shí)候,用戶空間中的udev會(huì)自動(dòng)響應(yīng) device_create(…)函數(shù),去/sysfs下尋找對(duì)應(yīng)的類從而創(chuàng)建設(shè)備節(jié)點(diǎn)。

?

2. 具體用法

需要包含頭文件 #include?<linux/device.h>????

static int led_init() {major = register_chrdev(0, "led_drv", &led_fops);led_drv_class = class_create("THIS_MODULE", "led_drv");device_create(led_drv_class, NULL, MKDEV(major, 0), NULL, "myled");return 0;}static void led_exit() {unregister_chrdev(major, "led_drv");device_destroy(led_drv_class, MKDEV(major, 0));class_destroy(led_drv_class);}

?

在驅(qū)動(dòng)初始化的代碼里調(diào)用class_create為該設(shè)備創(chuàng)建一個(gè)class,再為每個(gè)設(shè)備調(diào)用 device_create創(chuàng)建對(duì)應(yīng)的設(shè)備。

加載模塊后,會(huì)自動(dòng)在/dev/下創(chuàng)建myled設(shè)備文件。

?

總結(jié)

以上是生活随笔為你收集整理的linux驱动:自动创建设备节点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。