当前位置: 技术问答>linux和unix
关于设备节点,设备文件系统的关系
来源: 互联网 发布时间:2016-09-29
本文导语: 我刚开始学习内核驱动程序,对里面有些概念很混淆。我学习的是2.6内核。 一般讲驱动程序开发的书都先讲字符设备驱动,通常是写一个简单的驱动,然后insmod加载模块,mknod创建设备节点。但是讲到设备文件系统的...
我刚开始学习内核驱动程序,对里面有些概念很混淆。我学习的是2.6内核。
一般讲驱动程序开发的书都先讲字符设备驱动,通常是写一个简单的驱动,然后insmod加载模块,mknod创建设备节点。但是讲到设备文件系统的时候,说2.6内核引进udev设备文件系统,实现动态创建和删除文件节点,就是不用手动去mknod。还有说每一个设备对应一个struct device,每一个设备驱动对应一个struct device_driver云云,但是这些在一开始讲的字符设备驱动里都没有体现。
我想知道这些到底是什么关系,字符设备里用的struct cdev是不是跟udev属于不同体系,那这种字符设备驱动在2.6内核里能够自动创建和删除设备节点吗?书上说devfs_register是2.4版本的做法,即devfs,而不是udev,那是不是2.6已经不能用devfs_register了?
一般讲驱动程序开发的书都先讲字符设备驱动,通常是写一个简单的驱动,然后insmod加载模块,mknod创建设备节点。但是讲到设备文件系统的时候,说2.6内核引进udev设备文件系统,实现动态创建和删除文件节点,就是不用手动去mknod。还有说每一个设备对应一个struct device,每一个设备驱动对应一个struct device_driver云云,但是这些在一开始讲的字符设备驱动里都没有体现。
我想知道这些到底是什么关系,字符设备里用的struct cdev是不是跟udev属于不同体系,那这种字符设备驱动在2.6内核里能够自动创建和删除设备节点吗?书上说devfs_register是2.4版本的做法,即devfs,而不是udev,那是不是2.6已经不能用devfs_register了?
|
这个概念混淆确实很严重
即使是一些圣经级别的,ldd3之类,难免年头长了也会过时。
目前最新的圣经是ELDD,lz可以看这本。其中的第5章介绍一个基本的字符设备驱动,演示udev自动创建设备节点和新的字符设备注册接口。网上有第5章的中文翻译。
淡然最好的参考还是内核源码,根据实际项目参考源码。
现在是mknod和udev共存的时代
devfs_register高版本已经不在了
即使是一些圣经级别的,ldd3之类,难免年头长了也会过时。
目前最新的圣经是ELDD,lz可以看这本。其中的第5章介绍一个基本的字符设备驱动,演示udev自动创建设备节点和新的字符设备注册接口。网上有第5章的中文翻译。
淡然最好的参考还是内核源码,根据实际项目参考源码。
现在是mknod和udev共存的时代
devfs_register高版本已经不在了