设备节点分类:
字符设备(c)(无缓冲且只能顺序存取)
块设备(b)(有缓冲且可以随机存取)
节点:
节点指的是一个入口,我们通过这样的入口来达到操作(读、写等)某设备的目的,而之所以要统一在/dev下搞那么多所谓“入口”,是因为Linux系统提供所谓虚拟文件系统,它可以帮助我们使用一致的函数接口(open()、read()、write()、close()……)等来操作各种不同的设备,大大降低了应用程序访问Linux外围设备的复杂性。
设备节点两种创建方法:
1、手动创建设备节点:
比如创建一个主次设备号分别为3和18的字符设备,所使用的命令是:
sudo mknod /dev/somedevice c 3 18
2、在加载驱动程序时自动创建
Linux内核提供了一组函数,可以在模块加载时自动在/dev目录下创建相对应的设备节点,并在卸载模块时删除该节点,能实现这样操作的前提是用户空间已经移植了udev(简化版本的mdev)。相关的函数和结构:(1)struct class,是一个设备结构体,注册一个类结构,会在/sys/class目录下创建对应的文件夹,文件夹中保存有在/dev目录下自动生成设备节点的信息。(2)struct class_device结构体。
设备节点的作用
设备节点使得用户可以与内核进行硬件的沟通,读写设备以及其他的操作
在linux里面设备就像是普通文件一样的存在,访问一个设备就好像是访问一个文件一样
主设备号代表着一类设备,次设备号代表着同一类设备的不同个体,说到这里也许并不知道设备节点的存在形式
tty:
Teletype的缩写
Linux中的设备节点说明:
https://my.oschina.net/luqili/blog/1560559
字符设备的两种创建方法: