Struct Inheritance in drivers/ata/
Peter Hamilton
peterghamilton at gmail.com
Thu May 26 16:46:08 EDT 2011
The code in drivers/ata/ uses an implementation of inheritance that I have
not seen before. It's only briefly explained in the header file (
include/linux/libata.h:885):
/*
* ->inherits must be the last field and all the preceding
* fields must be pointers.
*/
The structs are then initialized with .inherits assigned first:
drivers/ata/sata_nv.c:475
static struct ata_port_operations nv_nf2_ops = {
.inherits = &nv_generic_ops,
.freeze = nv_nf2_freeze,
.thaw = nv_nf2_thaw,
};
Is this actually implementing inheritance? Why do all preceding fields need
to be pointers?
As far as I can tell, this style is only found in the ata drivers.
Could anyone explain how this works?
Thanks,
Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110526/3c1f4f32/attachment.html
More information about the Kernelnewbies
mailing list