免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5681 | 回复: 9
打印 上一主题 下一主题

对ldd3中注册字符设备的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-29 15:38 |只看该作者 |倒序浏览
在LDD3字符设备驱动程序章节中,
给出的注册字符设备的代码是这样:
static void scull_setup_cdev(struct scull_dev *dev,int index)
{
int err,devno = MKDEV(scull_major,scull_minor+index);

cdev_init(&dev>cdev,&scull_fops); /* A */
dev->cdev.owner = THISMODULE;         
dev->cdev.ops = &scull_fops;    /* B */
err = cdev_add(&dev->cdev,devno,1);
}
其中cdev_init函数原型:
void cdev_init(struct cdev *cdev, const struct file_operations *fops)
{
        memset(cdev, 0, sizeof *cdev);
        INIT_LIST_HEAD(&cdev->list);
        kobject_init(&cdev->kobj, &ktype_cdev_default);
        cdev->ops = fops;
}
在这个函数中,已经有给cdev->ops赋值了。
为什么还要在行B中再次给它赋值呢?

论坛徽章:
0
2 [报告]
发表于 2011-06-29 16:33 |只看该作者
没发现,关注下

论坛徽章:
0
3 [报告]
发表于 2011-06-29 18:26 |只看该作者
额,这个确实有点怪哦, 至少我的所有字符设备驱动中都没有加dev->cdev.ops = &scull_fops 这一句

论坛徽章:
0
4 [报告]
发表于 2011-06-30 00:45 |只看该作者
完全多余的。
没什么奇怪的啊。
大牛也有笔误和废话的时候。

论坛徽章:
0
5 [报告]
发表于 2011-06-30 08:44 |只看该作者
回复 4# 奇门遁甲-lu


    如果是笔误,那也太明显了吧,作者应该会注意到的。再者这本书都第3版了

论坛徽章:
0
6 [报告]
发表于 2011-06-30 09:06 |只看该作者
回复 5# add358


      就好比内核代码也有些冗余的代码。常看到一部分的补丁就修改像上面的这些冗余代码。

论坛徽章:
0
7 [报告]
发表于 2011-07-08 16:18 |只看该作者
恩,看书时,我也在这行“多此一举”的代码上纠结了一小段时间啊。。。
这行应该是多余的。

论坛徽章:
3
卯兔
日期:2013-08-26 22:14:57未羊
日期:2013-09-08 19:16:05未羊
日期:2014-10-23 10:34:12
8 [报告]
发表于 2011-07-10 14:28 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2011-07-25 20:45 |只看该作者
我也为此纠结了好久。。。

论坛徽章:
0
10 [报告]
发表于 2012-05-31 16:07 |只看该作者
本事就是多余的。可以去掉B
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP