diff options
Diffstat (limited to 'include/linux/init.h')
-rw-r--r-- | include/linux/init.h | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/include/linux/init.h b/include/linux/init.h index e59041e21df3..10ed4f436458 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
@@ -93,14 +93,6 @@ | |||
93 | 93 | ||
94 | #define __exit __section(.exit.text) __exitused __cold notrace | 94 | #define __exit __section(.exit.text) __exitused __cold notrace |
95 | 95 | ||
96 | /* Used for HOTPLUG */ | ||
97 | #define __devinit __section(.devinit.text) __cold notrace | ||
98 | #define __devinitdata __section(.devinit.data) | ||
99 | #define __devinitconst __constsection(.devinit.rodata) | ||
100 | #define __devexit __section(.devexit.text) __exitused __cold notrace | ||
101 | #define __devexitdata __section(.devexit.data) | ||
102 | #define __devexitconst __constsection(.devexit.rodata) | ||
103 | |||
104 | /* Used for HOTPLUG_CPU */ | 96 | /* Used for HOTPLUG_CPU */ |
105 | #define __cpuinit __section(.cpuinit.text) __cold notrace | 97 | #define __cpuinit __section(.cpuinit.text) __cold notrace |
106 | #define __cpuinitdata __section(.cpuinit.data) | 98 | #define __cpuinitdata __section(.cpuinit.data) |
@@ -126,10 +118,6 @@ | |||
126 | #define __INITRODATA .section ".init.rodata","a",%progbits | 118 | #define __INITRODATA .section ".init.rodata","a",%progbits |
127 | #define __FINITDATA .previous | 119 | #define __FINITDATA .previous |
128 | 120 | ||
129 | #define __DEVINIT .section ".devinit.text", "ax" | ||
130 | #define __DEVINITDATA .section ".devinit.data", "aw" | ||
131 | #define __DEVINITRODATA .section ".devinit.rodata", "a" | ||
132 | |||
133 | #define __CPUINIT .section ".cpuinit.text", "ax" | 121 | #define __CPUINIT .section ".cpuinit.text", "ax" |
134 | #define __CPUINITDATA .section ".cpuinit.data", "aw" | 122 | #define __CPUINITDATA .section ".cpuinit.data", "aw" |
135 | #define __CPUINITRODATA .section ".cpuinit.rodata", "a" | 123 | #define __CPUINITRODATA .section ".cpuinit.rodata", "a" |
@@ -186,16 +174,16 @@ extern bool initcall_debug; | |||
186 | * can point at the same handler without causing duplicate-symbol build errors. | 174 | * can point at the same handler without causing duplicate-symbol build errors. |
187 | */ | 175 | */ |
188 | 176 | ||
189 | #define __define_initcall(level,fn,id) \ | 177 | #define __define_initcall(fn, id) \ |
190 | static initcall_t __initcall_##fn##id __used \ | 178 | static initcall_t __initcall_##fn##id __used \ |
191 | __attribute__((__section__(".initcall" level ".init"))) = fn | 179 | __attribute__((__section__(".initcall" #id ".init"))) = fn |
192 | 180 | ||
193 | /* | 181 | /* |
194 | * Early initcalls run before initializing SMP. | 182 | * Early initcalls run before initializing SMP. |
195 | * | 183 | * |
196 | * Only for built-in code, not modules. | 184 | * Only for built-in code, not modules. |
197 | */ | 185 | */ |
198 | #define early_initcall(fn) __define_initcall("early",fn,early) | 186 | #define early_initcall(fn) __define_initcall(fn, early) |
199 | 187 | ||
200 | /* | 188 | /* |
201 | * A "pure" initcall has no dependencies on anything else, and purely | 189 | * A "pure" initcall has no dependencies on anything else, and purely |
@@ -204,23 +192,23 @@ extern bool initcall_debug; | |||
204 | * This only exists for built-in code, not for modules. | 192 | * This only exists for built-in code, not for modules. |
205 | * Keep main.c:initcall_level_names[] in sync. | 193 | * Keep main.c:initcall_level_names[] in sync. |
206 | */ | 194 | */ |
207 | #define pure_initcall(fn) __define_initcall("0",fn,0) | 195 | #define pure_initcall(fn) __define_initcall(fn, 0) |
208 | 196 | ||
209 | #define core_initcall(fn) __define_initcall("1",fn,1) | 197 | #define core_initcall(fn) __define_initcall(fn, 1) |
210 | #define core_initcall_sync(fn) __define_initcall("1s",fn,1s) | 198 | #define core_initcall_sync(fn) __define_initcall(fn, 1s) |
211 | #define postcore_initcall(fn) __define_initcall("2",fn,2) | 199 | #define postcore_initcall(fn) __define_initcall(fn, 2) |
212 | #define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s) | 200 | #define postcore_initcall_sync(fn) __define_initcall(fn, 2s) |
213 | #define arch_initcall(fn) __define_initcall("3",fn,3) | 201 | #define arch_initcall(fn) __define_initcall(fn, 3) |
214 | #define arch_initcall_sync(fn) __define_initcall("3s",fn,3s) | 202 | #define arch_initcall_sync(fn) __define_initcall(fn, 3s) |
215 | #define subsys_initcall(fn) __define_initcall("4",fn,4) | 203 | #define subsys_initcall(fn) __define_initcall(fn, 4) |
216 | #define subsys_initcall_sync(fn) __define_initcall("4s",fn,4s) | 204 | #define subsys_initcall_sync(fn) __define_initcall(fn, 4s) |
217 | #define fs_initcall(fn) __define_initcall("5",fn,5) | 205 | #define fs_initcall(fn) __define_initcall(fn, 5) |
218 | #define fs_initcall_sync(fn) __define_initcall("5s",fn,5s) | 206 | #define fs_initcall_sync(fn) __define_initcall(fn, 5s) |
219 | #define rootfs_initcall(fn) __define_initcall("rootfs",fn,rootfs) | 207 | #define rootfs_initcall(fn) __define_initcall(fn, rootfs) |
220 | #define device_initcall(fn) __define_initcall("6",fn,6) | 208 | #define device_initcall(fn) __define_initcall(fn, 6) |
221 | #define device_initcall_sync(fn) __define_initcall("6s",fn,6s) | 209 | #define device_initcall_sync(fn) __define_initcall(fn, 6s) |
222 | #define late_initcall(fn) __define_initcall("7",fn,7) | 210 | #define late_initcall(fn) __define_initcall(fn, 7) |
223 | #define late_initcall_sync(fn) __define_initcall("7s",fn,7s) | 211 | #define late_initcall_sync(fn) __define_initcall(fn, 7s) |
224 | 212 | ||
225 | #define __initcall(fn) device_initcall(fn) | 213 | #define __initcall(fn) device_initcall(fn) |
226 | 214 | ||
@@ -341,18 +329,6 @@ void __init parse_early_options(char *cmdline); | |||
341 | #define __INITRODATA_OR_MODULE __INITRODATA | 329 | #define __INITRODATA_OR_MODULE __INITRODATA |
342 | #endif /*CONFIG_MODULES*/ | 330 | #endif /*CONFIG_MODULES*/ |
343 | 331 | ||
344 | /* Functions marked as __devexit may be discarded at kernel link time, depending | ||
345 | on config options. Newer versions of binutils detect references from | ||
346 | retained sections to discarded sections and flag an error. Pointers to | ||
347 | __devexit functions must use __devexit_p(function_name), the wrapper will | ||
348 | insert either the function_name or NULL, depending on the config options. | ||
349 | */ | ||
350 | #if defined(MODULE) || defined(CONFIG_HOTPLUG) | ||
351 | #define __devexit_p(x) x | ||
352 | #else | ||
353 | #define __devexit_p(x) NULL | ||
354 | #endif | ||
355 | |||
356 | #ifdef MODULE | 332 | #ifdef MODULE |
357 | #define __exit_p(x) x | 333 | #define __exit_p(x) x |
358 | #else | 334 | #else |