cdev_init and struct file_operations

John de la Garza john at jjdev.com
Wed Aug 27 10:35:52 EDT 2014


On Tue, Aug 26, 2014 at 09:18:57PM -0400, Valdis.Kletnieks at vt.edu wrote:
> On Tue, 26 Aug 2014 20:48:41 -0400, John de la Garza said:
> > Why does the code from ldd3 set dev->cdev.ops = &scull_fops again?
> 
> Probably because when ldd3 was written several years ago, cdev_init()
> didn't set it, so it wasn't "again"....
> 
> > Doesn't cdev_init already do that?
> 
> It does *now*.
> 
> Remember that ldd3 was written about 6 million lines of code ago....

It did then, too (unless I'm missing something)

linux$  git branch
* (detached from v2.6.12)
  master

from v2.6.12

void cdev_init(struct cdev *cdev, struct file_operations *fops)
{
        memset(cdev, 0, sizeof *cdev);
        INIT_LIST_HEAD(&cdev->list);
        cdev->kobj.ktype = &ktype_cdev_default;
        kobject_init(&cdev->kobj);
        cdev->ops = fops;
}



More information about the Kernelnewbies mailing list