From mboxrd@z Thu Jan 1 00:00:00 1970 From: peterghamilton@gmail.com (Peter Hamilton) Date: Thu, 26 May 2011 14:46:08 -0600 Subject: Struct Inheritance in drivers/ata/ Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org 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