git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
include
/
linux
/
init.h
diff --git
a/include/linux/init.h
b/include/linux/init.h
index
45069e2
..
05c83e0
100644
(file)
--- a/
include/linux/init.h
+++ b/
include/linux/init.h
@@
-64,8
+64,11
@@
typedef int (*initcall_t)(void);
typedef void (*exitcall_t)(void);
typedef int (*initcall_t)(void);
typedef void (*exitcall_t)(void);
-extern initcall_t __con_initcall_start, __con_initcall_end;
-extern initcall_t __security_initcall_start, __security_initcall_end;
+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[];
#endif
#ifndef MODULE
#endif
#ifndef MODULE
@@
-107,25
+110,39
@@
extern initcall_t __security_initcall_start, __security_initcall_end;
struct obs_kernel_param {
const char *str;
int (*setup_func)(char *);
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.
+ *
+ * Force the alignment so the compiler doesn't space elements of the
+ * obs_kernel_param "array" too far apart in .init.setup.
+ */
+#define __setup_param(str, unique_id, fn, early) \
static char __setup_str_##unique_id[] __initdata = str; \
static struct obs_kernel_param __setup_##unique_id \
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 }
+ __attribute_used__ \
+ __attribute__((__section__(".init.setup"))) \
+ __attribute__((aligned((sizeof(long))))) \
+ = { __setup_str_##unique_id, fn, early }
#define __setup_null_param(str, unique_id) \
#define __setup_null_param(str, unique_id) \
- __setup_param(str, unique_id, NULL)
+ __setup_param(str, unique_id, NULL
, 0
)
#define __setup(str, fn) \
#define __setup(str, fn) \
- __setup_param(str, fn, fn)
+ __setup_param(str, fn, fn
, 0
)
#define __obsolete_setup(str) \
__setup_null_param(str, __LINE__)
#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__ */
/**
#endif /* __ASSEMBLY__ */
/**