summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@elm.ozlabs.ibm.com>2008-09-13 10:11:25 +1000
committerStephen Rothwell <sfr@elm.ozlabs.ibm.com>2008-09-13 10:11:25 +1000
commitdee34d72ff950b907a68de3cc3efbdd33df4d126 (patch)
tree49f4ac13f70f7254c7a8cf41a4f1d6bb3dd7ccd9 /include
parenteeefe3613133ce05f7fcf7fd3eb7b5fde94338ee (diff)
parentea09af7a7120dd65d8d4a988a78360a7321808dc (diff)
Merge commit 'fastboot/auto-fastboot-next'
Conflicts: include/linux/init.h
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/vmlinux.lds.h6
-rw-r--r--include/linux/init.h8
2 files changed, 13 insertions, 1 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index ea0a18fb1b87..9d2c76912efb 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -409,8 +409,12 @@
*(.initcall5.init) \
*(.initcall5s.init) \
*(.initcallrootfs.init) \
+ *(.initcall6s.init) \
+ VMLINUX_SYMBOL(__async_initcall_start) = .; \
+ *(.initcall6a.init) \
+ VMLINUX_SYMBOL(__async_initcall_end) = .; \
*(.initcall6.init) \
- *(.initcall6s.init) \
+ VMLINUX_SYMBOL(__device_initcall_end) = .; \
*(.initcall7.init) \
*(.initcall7s.init)
diff --git a/include/linux/init.h b/include/linux/init.h
index 68a1c49ae3ed..8a500f9e1baa 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -144,6 +144,8 @@ extern char __initdata boot_command_line[];
extern char *saved_command_line;
extern unsigned int reset_devices;
extern int initmem_now_dynamic;
+extern int do_one_initcall(initcall_t fn);
+
/* used by init/main.c */
void setup_arch(char **);
@@ -198,11 +200,13 @@ extern void (*late_time_init)(void);
#define fs_initcall_sync(fn) __define_initcall("5s",fn,5s)
#define rootfs_initcall(fn) __define_initcall("rootfs",fn,rootfs)
#define device_initcall(fn) __define_initcall("6",fn,6)
+#define device_initcall_async(fn) __define_initcall("6a", fn, 6a)
#define device_initcall_sync(fn) __define_initcall("6s",fn,6s)
#define late_initcall(fn) __define_initcall("7",fn,7)
#define late_initcall_sync(fn) __define_initcall("7s",fn,7s)
#define __initcall(fn) device_initcall(fn)
+#define __initcall_async(fn) device_initcall_async(fn)
#define __exitcall(fn) \
static exitcall_t __exitcall_##fn __exit_call = fn
@@ -302,6 +306,7 @@ extern void per_cpu_alloc_dyn_array(int cpu, char *ptr);
* be one per module.
*/
#define module_init(x) __initcall(x);
+#define module_init_async(x) __initcall_async(x);
/**
* module_exit() - driver exit entry point
@@ -324,10 +329,13 @@ extern void per_cpu_alloc_dyn_array(int cpu, char *ptr);
#define subsys_initcall(fn) module_init(fn)
#define fs_initcall(fn) module_init(fn)
#define device_initcall(fn) module_init(fn)
+#define device_initcall_async(fn) module_init(fn)
#define late_initcall(fn) module_init(fn)
#define security_initcall(fn) module_init(fn)
+#define module_init_async(fn) module_init(fn)
+
/* Each module must use one module_init(). */
#define module_init(initfn) \
static inline initcall_t __inittest(void) \