- 论坛徽章:
- 0
|
回复 3# meditateandroid
谢谢!不过我这个驱动:(如下)
struct class *cls;
static int __init mm_init(void)
{
int ret=0;
ret=alloc_chrdev_region(&devid,0,DEV_CNT,modname);
if(ret)
printk("get devid failed\n");
ops0.read =mm_read0;
ops0.write =mm_write0;
ops0.poll = fifo_poll;
ops1.read =mm_read1;
ops1.write =mm_write1;
ops.open=mm_open;
fifo=(struct fifo*)kmalloc(sizeof(*fifo),GFP_KERNEL);
memset(fifo,0,sizeof(*fifo));
cdev_init(&fifo->dev,&ops);
cdev_add(&fifo->dev,devid,DEV_CNT);
cls=class_create(THIS_MODULE,modname);
device_create(cls,NULL,MKDEV(MAJOR(devid),0),fifo,"fifo");
device_create(cls,NULL,MKDEV(MAJOR(devid),1),fifo,"pipe");
sema_init(&fifo->sem,1);
init_waitqueue_head(&fifo->rq);
init_waitqueue_head(&fifo->wq);
return 0;
}
module_init(mm_init);
如果是将上面的class_create(THIS_MODULE,modname)去掉,不仅/sys/class中没有类,/dev中也没有节点“fifo”和“pipe”。必须加上class_create()才可以。这个字符型驱动是培训班老师写的调试成功的驱动。很是疑惑,能帮我解释一下吗?不知道能不能加你QQ,想请教一点问题,419074202 |
|