linux下的设备在/dev/目录下一般会有相对应的节点,关于设备号有如下的言论:
主设备号被系统用来确定驱动程序,次设备号被驱动程序用来确定具体的设备。
像如下的两个字符设备节点:
crw-r--r-- 1 root root 254, 0 Jan 9 13:14 /dev/nx_ids
crw-r--r-- 1 root root 254, 99 Jan 9 13:14 /dev/nx_ips
它们的主设备号都是254,当用户代码打开这两个设备的时候,系统会定位到同一个驱动程序,并调用其open函数。那么驱动程序怎么知道用户打开的是哪一个设备呢?就是根据次设备号来判断的。
int my_drv_open(struct inode *inode, struct file *filp) { if (0 == MINOR(inode->i_rdev)) { //nx_ids
} else if (99 == MINOR(inode->i_rdev)) { //nx_ips
} return 0; }
|
在include/linux/kdev_t.h文件中可以看到操作设备号的方法
阅读(2113) | 评论(1) | 转发(0) |