eddy_tianqian 发表于 2014-6-12 22:35:06

TQ210 /dev下的设备节点创建

TQ210 /dev/目录下的设备节点是如何创建的呢?
1. mknod
2. mdev
3. device_create()

但在光盘的linux源码和开发板启动的系统中均没找到/dev/目录下设备节点创建的线索。请专家给些提示,谢谢~

s1005056 发表于 2014-6-13 16:45:08

可以參考
http://www.armbbs.net/forum.php?mod=viewthread&tid=19665
的第二章跟第七章

如果沒有回答到eddy_tianqian的問題的話,還請補充想要知道的方向

eddy_tianqian 发表于 2014-6-13 23:13:16

s1005056 发表于 2014-6-13 16:45
可以參考
http://www.armbbs.net/forum.php?mod=viewthread&tid=19665
的第二章跟第七章


非常感谢s1005056的热心回复,但对于原有的问题还是存在疑问。对于在帖子中提到的/dev目录下设备文件的创建方式devfs_register()主要存在于2.6以前的代码中,除了mknod方式外,现在大多使用udev/mdev(busybox集成工具)或device_create()完成。同时,我的TQ210板子上运行的是开发板光盘上的2.6.35.7内核,在该源码中也没找到对devfs_register()的调用。

我想弄明白TQ210板子上/dev目录下的设备节点文件是通过什么方式创建的。目前我的发现是:
1.不是mknod方式:原因在于我在开发板附带光盘的2.6.35.7代码中,没有找到对mknod的使用;
2.不是udev/mdev方式:在/etc/目录下村镇mdev.conf文件,但从该文件的内容上看,它主要完成热插拔相关的一些操作,主要是针对u盘之类的设备挂载,不可能创建/dev/目录下的全部设备节点;
3.不是device_create()方式:在drivers/目录下存在device_create()函数的使用,但数量并不多,不足以创建/dev/目录下的所有设备节点;

所以,总结来说,到目前并未找到/dev/目录下所有设备节点创建的方式。希望弄清楚该过程的朋友能指点一二,谢谢~

s1005056 发表于 2014-6-16 10:40:32

回頭翻了一下書,書上說是使用device_create函數創建設備文件的,於是查看了一下device_create的程式碼從註解上看起來應該也是註冊用的函數




再繼續追下去可以看到device_create -> device_create_vargs ->device_register -> device_add -> device_create_file -> ...
下面附上程式碼截圖















避免回文過長,關於device_create tracing source code就先到這邊
下一篇再討論關於device_create函數使用數量不多的問題

s1005056 发表于 2014-6-16 11:09:34

本帖最后由 s1005056 于 2014-6-16 11:11 编辑

eddy_tianqian 发表于 2014-6-13 23:13
非常感谢s1005056的热心回复,但对于原有的问题还是存在疑问。对于在帖子中提到的/dev目录下设备文件的创 ...
由於設備文件創建的方式不是只有使用udev+device_create的方式,還有其他的方式可以進行創建,例misc_register也能進行設備文件創建,而misc_register內也呼叫了device_create函數



另外還有platform_device_add函數也可以創建設備文件,而該函數中則是直接呼叫device_add





在kernel原始碼(Kernel 3.0.8 for Android)中搜尋device_add確實只有100個左右的呼叫,但是有幾個是被放在xxx_add_device, or xxx_device_probe函數當中,表示當某些設備要建立設備文件時,不會直接呼叫device_add而是透過xxx_add_device, or xxx_device_probe函數,因此只看device_add的引用數是不準確的。


因此關於設備文件的建立流程,應該是從device_create -> device_create_vargs ->device_register -> device_add -> device_create_file -> ... 一路trace下去就是了


以上為個人學習心得,如果有什麼不對的地方還請版上高手們指點


eddy_tianqian 发表于 2014-6-24 23:38:48

s1005056 发表于 2014-6-16 11:09
由於設備文件創建的方式不是只有使用udev+device_create的方式,還有其他的方式可以進行創建,例misc_reg ...

沿着你的思路,对照源码看了下,果然创建设备节点有很多种方式。多谢指点。
页: [1]
查看完整版本: TQ210 /dev下的设备节点创建