字符设备
Linux对设备的操作与对文件的操作是一样的,可以看到一个设备所对应的文件。我们平时用的read、write等函数也可以用于设备文件。
字符设备:
- 以字符为单位
- 按照顺利操作
- 没有缓存区,故不支持随机读写
例外:帧缓存设备,如显卡,是可以随机访问的
设备号
设备号由主设备号与次设备号组成。
主设备号标识设备对应的驱动程序。不同的设备可以有相同的主设备号,主设备号相同的设备使用相同的主设备号,内核利用主设备号与相应的驱动程序对应。
可以把主设备号理解成设备驱动程序的标识,就是Program
次设备号
原来区分具体设备驱动程序的实例,就是instance
创建设备文件节点
mknod /dev/char0 c 10 3
含义
mknod 创建设备节点
/dev 在...目录下创建
char0 设备名字
c 字符设备
10 主设备号
3 次设备号
在/dev目录下创建char0的设备,该设备文件对应的是字符设备,其主设备号是10,次设备号是3。
常见的设备号
file_operation结构体
file_operation是一个连接设备文件和文件操作的结构体,是一些函数指针的集合。每个文件都对应一个file_operation结构,用来执行对应的系统调用。
struct file_operations {
ssize_t (*read) (struct file* , char* , loff_t*);
......
}