cdev_init和cdev_add之後在/dev目錄下沒有長出設備節點原因

因爲在linux裏面有兩種設備文件系統,devfs和sysfs 
devfs 
1) 需要手動創建設備節點mknod fasync_dev c 250 0 
2) 或者在fasync_dev_init函數中添加: 
#ifdef CONFIG_DEVFS_FS //支持devfs文件系統,在內核裏面配置 
devfs_mk_cdev(設備號, S_IFCHR | S_IRUGO | S_IWUSR, 設備名稱) 
#endif

sysfs 
sysfs通過class_create和device_create在設備樹中創建相應的設備,應用層udev會自動根據設備樹的變化生成相應的設備節點。

綜上:在2.6內核之前通過函數cdev_init和cdev_add添加字符設備,另外還需要手動創建設備節點;在2.6之後的內核,通過cdev_init和cdev_add添加字符設備,通過class_create和device_create函數往sys文件系統中添加設備,udev檢測到/sys目錄的變動會根據變化在/dev目錄下創建對應的設備節點。

參考如下: 
 
 
並且啓動腳本中添加echo /sbin/mdev > /proc/sys/kernel/hotplug 
這樣當內核class_create和device_create往sys文件系統中添加設備的時候,會調用用戶空間的/sbin/mdev可執行程序
--------------------- 
作者:luckywang1103 
來源:CSDN 
原文:https://blog.csdn.net/luckywang1103/article/details/47860805 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章