On Fri, Jan 22, 2010 at 11:39 AM, Leelakrishna A <amudala.krishna@xxxxxxxxx> wrote:
appropriate place for this would be the init function of your driver.
Thanks,Hi All,In Oreilly's LDD 3rd edition it is given that struct cdev is the kernel's internal structure that represents char devices.Also given that before kernel invokes your device's operations, you must allocate and register one or more of these structures.My doubt is who will create this structure for a char device ( either kernel will create it or the driver author has to explicitly create it using cdev_alloc() )
Its a responsibilty of driver to allocate the 'cdev' structure, now driver can allocate it dynamically using 'cdev_alloc' or driver can have pre-allocated (may be a global structure).
But in both the case driver has to initialize 'ops' field of the cdev structure and then register cdev with the kernel using 'cdev_add'.
But in both the case driver has to initialize 'ops' field of the cdev structure and then register cdev with the kernel using 'cdev_add'.
If kernel creates it then at what situation it will create it or If driver author has to create it , when it has to create?
appropriate place for this would be the init function of your driver.
And once it get created how to link the file_operations structure to it?
Just initializing ops field and registering the cdev with kernel is enough.
Thanks in advance,LeelaKrishna.
Chetan Nanda