Thread (4 messages) flat view 4 messages, 3 authors, 2011-05-27

Struct Inheritance in drivers/ata/

From: Peter Hamilton <hidden>
Date: 2011-05-26 20:46:08

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 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help