aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/init.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/init.h')
-rw-r--r--include/linux/init.h64
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