毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

字符设备驱动中cdev.ops等等赋值的意义是什么

更新时间:2013-11-4:  来源:毕业论文

到cdev这个结构体这里:
static int __init freg_init(void) {     int err;       printk(KERN_ALERT"Initializing freg device.\n");       cdev_init(&freg_cdev, &freg_ops); //initialize the device instance     ndev = MKDEV(freg_major, freg_minor);     err = register_chrdev_region(ndev, 1, "freg");//allocate the device node number dynamically     if(err < 0)         return err;     printk("freg_init():major=%d, minor=%d\n", MAJOR(ndev), MINOR(ndev));       freg_cdev.owner = THIS_MODULE;     freg_cdev.ops = &freg_ops;       err = cdev_add(&freg_cdev, ndev, 1);//register the char_dev into the system     if(err < 0)         return err;       printk(KERN_ALERT"Succedded to initialize freg device.\n");       return 0; }

而当没有
freg_cdev.owner = THIS_MODULE;
freg_cdev.ops = &freg_ops;
这两行的时候,程序也是无误的运行,这里实践上的,还有理论上的cdev.owner和cdev.ops之类的和fops中是不是一样的 还有作用吗?
cdev_init(&freg_cdev, &freg_ops); //initialize the device instance
有这一句,后面那个
freg_cdev.ops = &freg_ops;
确实是多余的

因为cdev_init会对ops赋值。

看源码确实如此,这里。
cdev->ops = fops已经赋值了,不过freg_cdev.owner = THIS_MODULE没有赋值,要自己赋值。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。