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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).