cdev_init和cdev_add之後在/dev目錄下沒有長出裝置節點原因
阿新 • • 發佈:2018-11-05
因為在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
版權宣告:本文為博主原創文章,轉載請附上博文連結!