aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
authorJonas Bonn <jonas@southpole.se>2008-02-22 05:02:21 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-03-04 18:07:04 -0500
commit90a1ba0c5e39eeea278f263c28ae02166c5911c8 (patch)
tree8cd1ecd1b4b9e0a70ceb9ca6036082e92c882b41 /include/linux/pci.h
parent4725e7bdb831b9d4bd4ba0b0909398ebcf0c2df9 (diff)
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>
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 87195b62de52..f3165e7ac431 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -389,6 +389,16 @@ struct pci_driver {
389#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver) 389#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
390 390
391/** 391/**
392 * DECLARE_PCI_DEVICE_TABLE - macro used to describe a pci device table
393 * @_table: device table name
394 *
395 * This macro is used to create a struct pci_device_id array (a device table)
396 * in a generic manner.
397 */
398#define DECLARE_PCI_DEVICE_TABLE(_table) \
399 const struct pci_device_id _table[] __devinitconst
400
401/**
392 * PCI_DEVICE - macro used to describe a specific pci device 402 * PCI_DEVICE - macro used to describe a specific pci device
393 * @vend: the 16 bit PCI Vendor ID 403 * @vend: the 16 bit PCI Vendor ID
394 * @dev: the 16 bit PCI Device ID 404 * @dev: the 16 bit PCI Device ID