aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
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 /Documentation
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 'Documentation')
-rw-r--r--Documentation/pci.txt6
1 files changed, 4 insertions, 2 deletions
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 72b20c639596..bb7bd27d4682 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -123,7 +123,8 @@ initialization with a pointer to a structure describing the driver
123 123
124 124
125The ID table is an array of struct pci_device_id entries ending with an 125The ID table is an array of struct pci_device_id entries ending with an
126all-zero entry. Each entry consists of: 126all-zero entry; use of the macro DECLARE_PCI_DEVICE_TABLE is the preferred
127method of declaring the table. Each entry consists of:
127 128
128 vendor,device Vendor and device ID to match (or PCI_ANY_ID) 129 vendor,device Vendor and device ID to match (or PCI_ANY_ID)
129 130
@@ -191,7 +192,8 @@ Tips on when/where to use the above attributes:
191 192
192 o Do not mark the struct pci_driver. 193 o Do not mark the struct pci_driver.
193 194
194 o The ID table array should be marked __devinitdata. 195 o The ID table array should be marked __devinitconst; this is done
196 automatically if the table is declared with DECLARE_PCI_DEVICE_TABLE().
195 197
196 o The probe() and remove() functions should be marked __devinit 198 o The probe() and remove() functions should be marked __devinit
197 and __devexit respectively. All initialization functions 199 and __devexit respectively. All initialization functions