字符设备驱动简单问题
#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;
}
------解决方案--------------------当然是2了,你没看到if条件满足会错误返回吗!如果换成1,那其中一个设备不就会错误返回了  
------解决方案--------------------楼主没看仔细吧?代码里写的是“num>= MEMDEV_NR_DEVS”,这个和num >= MEMDEV_NR_DEVS -1 不是一样的效果么?