• Jonas Bonn's avatar
    PCI: Add DECLARE_PCI_DEVICE_TABLE macro · 90a1ba0c
    Jonas Bonn authored
    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: default avatarJonas Bonn <jonas@southpole.se>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    90a1ba0c
pci.txt 25 KB