summaryrefslogtreecommitdiff
path: root/include/linux/init.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/init.h')
-rw-r--r--include/linux/init.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/include/linux/init.h b/include/linux/init.h
index 45069e275b3d..641657ebe067 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -3,6 +3,7 @@
#include <linux/config.h>
#include <linux/compiler.h>
+#include <asm/setup.h>
/* These macros are used to mark some functions or
* initialized data (doesn't apply to uninitialized data)
@@ -66,6 +67,9 @@ typedef void (*exitcall_t)(void);
extern initcall_t __con_initcall_start, __con_initcall_end;
extern initcall_t __security_initcall_start, __security_initcall_end;
+
+/* Defined in init/main.c */
+extern char saved_command_line[COMMAND_LINE_SIZE];
#endif
#ifndef MODULE
@@ -107,25 +111,33 @@ extern initcall_t __security_initcall_start, __security_initcall_end;
struct obs_kernel_param {
const char *str;
int (*setup_func)(char *);
+ int early;
};
-/* OBSOLETE: see moduleparam.h for the right way. */
-#define __setup_param(str, unique_id, fn) \
+/* Only for really core code. See moduleparam.h for the normal way. */
+#define __setup_param(str, unique_id, fn, early) \
static char __setup_str_##unique_id[] __initdata = str; \
static struct obs_kernel_param __setup_##unique_id \
__attribute_used__ \
__attribute__((__section__(".init.setup"))) \
- = { __setup_str_##unique_id, fn }
+ = { __setup_str_##unique_id, fn, early }
#define __setup_null_param(str, unique_id) \
- __setup_param(str, unique_id, NULL)
+ __setup_param(str, unique_id, NULL, 0)
#define __setup(str, fn) \
- __setup_param(str, fn, fn)
+ __setup_param(str, fn, fn, 0)
#define __obsolete_setup(str) \
__setup_null_param(str, __LINE__)
+/* NOTE: fn is as per module_param, not __setup! Emits warning if fn
+ * returns non-zero. */
+#define early_param(str, fn) \
+ __setup_param(str, fn, fn, 1)
+
+/* Relies on saved_command_line being set */
+void __init parse_early_param(void);
#endif /* __ASSEMBLY__ */
/**