what is difference between cdev_alloc and cdev_init

后端 未结 3 1028
渐次进展
渐次进展 2021-01-13 06:24

I\'m creating a character device. I found two way to initialize char device

cdev_alloc

and

cdev_init

Acc

3条回答
  •  失恋的感觉
    2021-01-13 06:45

    you can use either:

    struct cdev my_cdev;
    

    in this case you don't need to call cdev_alloc because memory is already allocated. Instead you must call cdev_init(&my_cdev, &fops). and then my_cdev.owner = THIS_MODULE;

    OR

    you can use:

    struct cdev *my_cdev_p;
    

    in this case you must call cdev_alloc() to allocate memory. Then, you have to initialize my_cdev_p->ops=&fops; and my_cdev_p->owner = THIS_MODULE;. Never use cdev_init() in this case!

    Note that the 2 above methods don't belong to the old mechanism.

提交回复
热议问题