+ -
当前位置:首页 → 问答吧 → 字符设备驱动简单问题

字符设备驱动简单问题

时间:2011-11-08

来源:互联网

#define MEMDEV_NR_DEVS 2 //表示设备数
#define MEMDEV_MAJOR 251 //表示主设备号

dev_t devno=MKDEV(MEMDEV_MAJOR,0);//通过主设备号 与 次设备号 构造新的设备号

register_chrdev_region(devno,2,"memdev"); //devno表示要申请的设备号 2表示设备号的个数 

上面代码表示 有 2个两个设备号 ,也就是说会有两个设备

打开设备操作 mem_open(struct inode *inode,struct file *filp)
{
  struct mem_dev *dev; //设备描述结构
  int num=MINOR(inode->i_rdev) ;  
  if(num>= MEMDEV_NR_DEVS) //这是什么意思??? MEMDEV_NR_DEVS为2 ,设备为2个  
  //num返回的次设备号应该是0和 1啊,,怎么是num>MEMDEV_NR_DEVS
  而不是num>MEMDEV_NR_DEVS-1 ,,也就说次备号不能大于1啊,,
  总共才两个次设备号 ,,第一个是0,第二个是1,,,
  return -ENODEV;

}






作者: as123456789d   发布时间: 2011-11-08

当然是2了,你没看到if条件满足会错误返回吗!如果换成1,那其中一个设备不就会错误返回了 

作者: xintong2010   发布时间: 2011-11-25