PCI: Add DECLARE_PCI_DEVICE_TABLE macro
authorJonas Bonn <jonas@southpole.se>
Fri, 22 Feb 2008 10:02:21 +0000 (11:02 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 4 Mar 2008 23:07:04 +0000 (15:07 -0800)
commit90a1ba0c5e39eeea278f263c28ae02166c5911c8
tree8cd1ecd1b4b9e0a70ceb9ca6036082e92c882b41
parent4725e7bdb831b9d4bd4ba0b0909398ebcf0c2df9
PCI: Add DECLARE_PCI_DEVICE_TABLE macro

The definitions of struct pci_device_id arrays should generally follow
the same pattern across the entire kernel.  This macro defines this
array as const and puts it into the __devinitconst section.

There are currently many definitions scattered about the kernel that
omit the __devinitdata modifier despite the documentation stating that
it should always be there.  These definitions really also should have
been const, which wasn't possible before but has become so with the
addition of the __devinitconst attribute.

Furthermore, there are definitions that use "const" and __devinitdata,
which is explicitly wrong but the compiler doesn't catch section
mismatches if there's only one such one case in the module (which is
often the case).

Adding the __devinitconst modifier where there was nothing before buys
us memory.  Adding the const modifier gives the compiler a chance to do
its thing.  Changing __devinitdata to __devinitconst where it was wrong
actually fixes some compiler errors in older (mid-release) kernels that
were patched over by "removing" the section attribute altogether (which
wastes memory).

This macro makes it pretty difficult to get this definition wrong in
the future...

Signed-off-by: Jonas Bonn <jonas@southpole.se>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Documentation/pci.txt
include/linux/pci.h