Chinaunix首页 | 论坛 | 博客
  • 博客访问: 915590
  • 博文数量: 194
  • 博客积分: 7991
  • 博客等级: 少将
  • 技术积分: 2067
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-09 22:03
文章分类

全部博文(194)

文章存档

2010年(8)

2009年(71)

2008年(109)

2007年(6)

我的朋友

分类: LINUX

2008-01-09 14:02:51

 
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文件中可以看到操作设备号的方法

 

阅读(2113) | 评论(1) | 转发(0) |
0

上一篇:利用syslog进行简单调试

下一篇:10G IPS总结

给主人留下些什么吧!~~

chinaunix网友2008-03-14 09:33:42

谢谢,转了,呵呵