Chinaunix首页 | 论坛 | 博客
  • 博客访问: 925461
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类:

2008-03-14 09:33:05

主设备号与次设备号
 
linux下的设备在/dev/目录下一般会有相对应的节点,关于设备号有如下的言论:
主设备号被系统用来确定驱动程序,次设备号被驱动程序用来确定具体的设备。
 
像如下的两个字符设备节点:
crw-r--r--  1 root root 2540  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文件中可以看到操作设备号的方法

阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~