Re: Improved <linux/lists.h>

From: Borislav Deianov (borislav@lix.polytechnique.fr)
Date: Wed Feb 23 2000 - 13:57:45 EST


On Wed, Feb 23, 2000 at 01:02:45PM -0500, Jeff Garzik wrote:
> > Also sprach Borislav Deianov:
> > } On Tue, Feb 22, 2000 at 07:02:53PM -0500, Jeff Garzik wrote:
> > } >
> > } > One technique which is used in the kernel is to, if possible, place the
> > } > primary list_head member of a structure at the top of the struct.
> > } >
> > } > This allows you to reference the structure itself as if it were a list,
> > } > sometimes saving you a few keystrokes...
> > }
> > } Sounds dodgy to me... You still need a cast, and then one day you'll
> > } forget and rearrange the fields of your struct and the compiler won't
> > } even warn you. Maybe places in the kernel that do that should be
> > } fixed?
>
> Look at how the PCI code stores the list of pci_drivers...

OK, that code doesn't *depend* on the list_head being the first member
of the struct (i.e. it always calls list_entry, and takes &drv->node,
etc. where necessary). So it doesn't save you keystrokes but it does
save you a few cycles since you don't need to mess with offsets at
runtime to get to the struct. Cool micro-optimization, agreed.

> Bill Wendling wrote:
> > Plus, as per the CodingStyle doc, it's a "feature" of C. One that escapes
> > the mind of most programmers, especially newer ones. Saving keystrokes
> > shouldn't be the goal. Speeding up code should be the goal.

Can't find a reference to anything like this in CodingStyle...

Best,
Borislav

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:34 EST