读书人

ldd3书中的一个有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

ldd3书中的一个问题
地61页,得scull注册代码中cdev_init()之前是不是应该加一句
struct cdev dev-> cdev = cdev_alloc();
如果不用加,为什么?

[解决办法]
如果你想在运行时获得一个独立的 cdev 结构, 你可以为此使用这样的代码:

struct cdev *my_cdev = cdev_alloc();
my_cdev-> ops = &my_fops;

但是, 偶尔你会想将 cdev 结构嵌入一个你自己的设备特定的结构; scull 这样做了. 在这种情况下, 你应当初始化你已经分配的结构, 使用:

void cdev_init(struct cdev *cdev, struct file_operations *fops);


所以cdev_alloc和cdev_init是分别针对两种不同情况的,建议楼主看好ldd上下文~~~~~

读书人网 >UNIXLINUX

热点推荐