因爲在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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!