From: Alon Bar-Lev <alon.barlev@gmail.com>
To: Andi Kleen <ak@suse.de>
Cc: Matt Domsch <Matt_Domsch@dell.com>, Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, johninsd@san.rr.com,
davej@codemonkey.org.uk, Riley@williams.name,
trini@kernel.crashing.org, davem@davemloft.net, ecd@brainaid.de,
jj@sunsite.ms.mff.cuni.cz, anton@samba.org, wli@holomorphy.com,
lethal@linux-sh.org, rc@rc0.org.uk, spyro@f2s.com,
rth@twiddle.net, avr32@atmel.com, hskinnemoen@atmel.com,
starvik@axis.com, ralf@linux-mips.org, matthew@wil.cx,
grundler@parisc-linux.org, geert@linux-m68k.org,
zippel@linux-m68k.org, paulus@samba.org, schwidefsky@de.ibm.com,
heiko.carstens@de.ibm.com, uclinux-v850@lsi.nec.co.jp,
chris@zankel.net
Subject: [PATCH 01/26] Dynamic kernel command-line - common
Date: Mon, 4 Sep 2006 01:16:44 +0300 [thread overview]
Message-ID: <200609040116.46287.alon.barlev@gmail.com> (raw)
In-Reply-To: <200609040115.22856.alon.barlev@gmail.com>
1. Rename saved_command_line into boot_command_line, mark
as init disposable.
2. Add dynamic allocated saved_command_line.
3. Add dynamic allocated static_command_line.
4. During startup copy:
boot_command_line into saved_command_line.
arch command_line into static_command_line.
5. Parse static_command_line and not
arch command_line, so arch command_line may
be freed.
Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
---
diff -urNp linux-2.6.18-rc5-mm1.org/include/linux/init.h linux-2.6.18-rc5-mm1/include/linux/init.h
--- linux-2.6.18-rc5-mm1.org/include/linux/init.h 2006-09-03 18:57:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/include/linux/init.h 2006-09-03 20:30:12.000000000 +0300
@@ -67,7 +67,8 @@ extern initcall_t __con_initcall_start[]
extern initcall_t __security_initcall_start[], __security_initcall_end[];
/* Defined in init/main.c */
-extern char saved_command_line[];
+extern char __initdata boot_command_line[];
+extern char *saved_command_line;
extern unsigned int reset_devices;
/* used by init/main.c */
@@ -145,7 +146,7 @@ struct obs_kernel_param {
#define early_param(str, fn) \
__setup_param(str, fn, fn, 1)
-/* Relies on saved_command_line being set */
+/* Relies on boot_command_line being set */
void __init parse_early_param(void);
#endif /* __ASSEMBLY__ */
diff -urNp linux-2.6.18-rc5-mm1.org/init/main.c linux-2.6.18-rc5-mm1/init/main.c
--- linux-2.6.18-rc5-mm1.org/init/main.c 2006-09-03 18:57:18.000000000 +0300
+++ linux-2.6.18-rc5-mm1/init/main.c 2006-09-03 23:27:30.000000000 +0300
@@ -116,8 +116,12 @@ extern void time_init(void);
void (*late_time_init)(void);
extern void softirq_init(void);
-/* Untouched command line (eg. for /proc) saved by arch-specific code. */
-char saved_command_line[COMMAND_LINE_SIZE];
+/* Untouched command line saved by arch-specific code. */
+char __initdata boot_command_line[COMMAND_LINE_SIZE];
+/* Untouched saved command line (eg. for /proc) */
+char *saved_command_line;
+/* Command line for parameter parsing */
+static char *static_command_line;
static char *execute_command;
static char *ramdisk_execute_command;
@@ -400,6 +404,20 @@ static void __init smp_init(void)
#endif
/*
+ * We need to store the untouched command line for future reference.
+ * We also need to store the touched command line since the parameter
+ * parsing is performed in place, and we should allow a component to
+ * store reference of name/value for future reference.
+ */
+static void __init setup_command_line(char *command_line)
+{
+ saved_command_line = alloc_bootmem(strlen (boot_command_line)+1);
+ static_command_line = alloc_bootmem(strlen (command_line)+1);
+ strcpy (saved_command_line, boot_command_line);
+ strcpy (static_command_line, command_line);
+}
+
+/*
* We need to finalize in a non-__init function or else race conditions
* between the root thread and the init thread may cause start_kernel to
* be reaped by free_initmem before the root thread has proceeded to
@@ -453,7 +471,7 @@ void __init parse_early_param(void)
return;
/* All fall through to do_early_param. */
- strlcpy(tmp_cmdline, saved_command_line, COMMAND_LINE_SIZE);
+ strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
parse_args("early options", tmp_cmdline, NULL, 0, do_early_param);
done = 1;
}
@@ -503,6 +521,7 @@ asmlinkage void __init start_kernel(void
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
+ setup_command_line(command_line);
setup_per_cpu_areas();
smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
@@ -519,9 +538,9 @@ asmlinkage void __init start_kernel(void
preempt_disable();
build_all_zonelists();
page_alloc_init();
- printk(KERN_NOTICE "Kernel command line: %s\n", saved_command_line);
+ printk(KERN_NOTICE "Kernel command line: %s\n", boot_command_line);
parse_early_param();
- parse_args("Booting kernel", command_line, __start___param,
+ parse_args("Booting kernel", static_command_line, __start___param,
__stop___param - __start___param,
&unknown_bootoption);
sort_main_extable();
--
VGER BF report: H 0
next prev parent reply other threads:[~2006-09-03 22:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-03 22:15 [PATCH 00/26] Dynamic kernel command-line - Resend please ignore last Alon Bar-Lev
2006-09-03 22:16 ` Alon Bar-Lev [this message]
2006-09-03 22:17 ` [PATCH 02/26] Dynamic kernel command-line - alpha Alon Bar-Lev
2006-09-03 22:17 ` [PATCH 03/26] Dynamic kernel command-line - arm Alon Bar-Lev
2006-09-03 22:17 ` [PATCH 04/26] Dynamic kernel command-line - arm26 Alon Bar-Lev
2006-09-03 22:18 ` [PATCH 05/26] Dynamic kernel command-line - avr32 Alon Bar-Lev
2006-09-07 7:31 ` Haavard Skinnemoen
2006-09-07 16:21 ` Alon Bar-Lev
2006-09-13 8:22 ` Haavard Skinnemoen
2006-09-13 8:30 ` Alon Bar-Lev
2006-09-13 9:23 ` [PATCH 05/26] Dynamic kernel command-line - avr32 (resend with signoff) Haavard Skinnemoen
2006-09-03 22:18 ` [PATCH 06/26] Dynamic kernel command-line - cris Alon Bar-Lev
2006-09-03 22:18 ` [PATCH 07/26] Dynamic kernel command-line - frv Alon Bar-Lev
2006-09-03 22:19 ` [PATCH 08/26] Dynamic kernel command-line - h8300 Alon Bar-Lev
2006-09-03 22:19 ` [PATCH 09/26] Dynamic kernel command-line - i386 Alon Bar-Lev
2006-09-03 22:19 ` [PATCH 10/26] Dynamic kernel command-line - ia64 Alon Bar-Lev
2006-09-03 22:20 ` [PATCH 11/26] Dynamic kernel command-line - m32r Alon Bar-Lev
2006-09-03 22:20 ` [PATCH 12/26] Dynamic kernel command-line - m68k Alon Bar-Lev
2006-09-03 22:21 ` [PATCH 13/26] Dynamic kernel command-line - m68knommu Alon Bar-Lev
2006-09-03 22:21 ` [PATCH 14/26] Dynamic kernel command-line - mips Alon Bar-Lev
2006-09-03 22:21 ` [PATCH 15/26] Dynamic kernel command-line - parisc Alon Bar-Lev
2006-09-03 22:21 ` [PATCH 16/26] Dynamic kernel command-line - powerpc Alon Bar-Lev
2006-09-03 22:22 ` [PATCH 17/26] Dynamic kernel command-line - ppc Alon Bar-Lev
2006-09-03 22:22 ` [PATCH 18/26] Dynamic kernel command-line - s390 Alon Bar-Lev
2006-09-03 22:22 ` [PATCH 19/26] Dynamic kernel command-line - sh Alon Bar-Lev
2006-09-03 22:22 ` [PATCH 20/26] Dynamic kernel command-line - sh64 Alon Bar-Lev
2006-09-03 22:23 ` [PATCH 21/26] Dynamic kernel command-line - sparc Alon Bar-Lev
2006-09-03 22:23 ` [PATCH 22/26] Dynamic kernel command-line - sparc64 Alon Bar-Lev
2006-09-03 22:23 ` [PATCH 23/26] Dynamic kernel command-line - um Alon Bar-Lev
2006-09-05 17:24 ` Randy.Dunlap
2006-09-05 17:35 ` Alon Bar-Lev
2006-09-03 22:24 ` [PATCH 24/26] Dynamic kernel command-line - v850 Alon Bar-Lev
2006-09-03 22:24 ` [PATCH 25/26] Dynamic kernel command-line - x86_64 Alon Bar-Lev
2006-09-03 22:24 ` [PATCH 26/26] Dynamic kernel command-line - xtensa Alon Bar-Lev
-- strict thread matches above, loose matches on Subject: below --
2007-01-18 12:58 [patch 00/26] Dynamic kernel command-line Bernhard Walle
2007-01-18 12:58 ` [patch 01/26] Dynamic kernel command-line - common Bernhard Walle
2006-12-02 10:47 [PATCH 00/26] Dynamic kernel command-line Alon Bar-Lev
2006-12-02 10:48 ` [PATCH 01/26] Dynamic kernel command-line - common Alon Bar-Lev
2006-09-03 21:50 [PATCH 00/26] Dynamic kernel command-line Alon Bar-Lev
2006-09-03 21:52 ` [PATCH 01/26] Dynamic kernel command-line - common Alon Bar-Lev
2006-09-03 22:10 ` Matthew Wilcox
2006-09-03 22:12 ` Alon Bar-Lev
2006-09-05 23:52 ` Bill Davidsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200609040116.46287.alon.barlev@gmail.com \
--to=alon.barlev@gmail.com \
--cc=Matt_Domsch@dell.com \
--cc=Riley@williams.name \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=anton@samba.org \
--cc=avr32@atmel.com \
--cc=chris@zankel.net \
--cc=davej@codemonkey.org.uk \
--cc=davem@davemloft.net \
--cc=ecd@brainaid.de \
--cc=geert@linux-m68k.org \
--cc=grundler@parisc-linux.org \
--cc=heiko.carstens@de.ibm.com \
--cc=hskinnemoen@atmel.com \
--cc=jj@sunsite.ms.mff.cuni.cz \
--cc=johninsd@san.rr.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=paulus@samba.org \
--cc=ralf@linux-mips.org \
--cc=rc@rc0.org.uk \
--cc=rth@twiddle.net \
--cc=schwidefsky@de.ibm.com \
--cc=spyro@f2s.com \
--cc=starvik@axis.com \
--cc=trini@kernel.crashing.org \
--cc=uclinux-v850@lsi.nec.co.jp \
--cc=wli@holomorphy.com \
--cc=zippel@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.