cdev_alloc和cdev_init有什么区别 [英] what is difference between cdev_alloc and cdev_init

查看:119
本文介绍了cdev_alloc和cdev_init有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建字符设备.我发现了两种初始化char设备的方法

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

cdev_alloc

cdev_init

根据书籍,如果我将struct cdev嵌入设备结构中,则应该使用cdev_init

According to book, if i'm embedding struct cdev in my device struct then i should use cdev_init

谁能告诉我他们之间有什么区别?

Can any one tell me that what are difference between them?

推荐答案

您可以使用:

struct cdev my_cdev;

在这种情况下,您不需要调用cdev_alloc,因为已经分配了内存.相反,您必须调用cdev_init(&my_cdev, &fops). 然后my_cdev.owner = THIS_MODULE;

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

您可以使用:

struct cdev *my_cdev_p;

在这种情况下,您必须调用cdev_alloc()来分配内存. 然后,您必须初始化my_cdev_p->ops=&fops;my_cdev_p->owner = THIS_MODULE;.在这种情况下,切勿使用cdev_init()

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!

请注意,上述2种方法不属于旧机制.

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

这篇关于cdev_alloc和cdev_init有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆