[PATCH] Announcing extended handling of boot command line

Roderich Schupp (rsch@ExperTeam.de)
Mon, 29 Dec 1997 02:13:30 +0100


--0__=ELZK2103LJ57iUdg8o0rS6F8FdNvK5vuy5sI0VeSQC7agF0RijbggF6F
Content-type: text/plain; charset=us-ascii

Hi folks,
here's my implementation of an extension to handle the parameters
from the boot command line.
What does it do?
(1) cleanup of init/main.c (gets rid of cooked_param array and
moves "registration" of options and associated setup functions
back into the file where the setup function is defined)
(2) potential reuse of MODULE_PARM options in the non-module case,
i.e. say module foo.c defines
MODULE_PARM(bar, "i");
and thus can be loaded with
insmod foo ... bar=123 ...

if foo.o is built into the kernel instead you can use
the boot command line
... foo.bar=123 ...
to set bar to 123 (this requires minimal changes to foo.c, see below)
(thanks to Grant Guenther for suggesting this)
(3) quoted C-style strings (including backslash escapes)
can be used in the boot command line
What remains to do?
(1) currently only works for ix86 (mainly because I was too lazy
to change the kernel loader scripts for the other architectures);
there is a potential problem for sparc/sparc64, though:
the boot command line is initdata for these and
MODULE_PARM(bar, "s")
makes bar point somewhere into the original command line
(2) the actual cleanup of the cooked_param array in init/main.c
(because this would mean small changes to many files and would make
this patch too large to post to the list); however, as an example,
I cleaned up the ramdisk related entries:
old param name new param name

ramdisk_start= rd.rd_image_start=
prompt_ramdisk= rd.rd_prompt=
load_ramdisk= rd.rd_doload=
ramdisk=, ramdisk_size= rd.rd_size=
Note: this reveals a shortcoming of the current MODULE_PARM scheme:
the option and the variable set by the option must have
the same name. I propose a three parameter variant, e.g.
MODULE_PARM3("load", rd_doload, "i")
would set variable rd_doload when given the option "rd.load=0"
See drivers/block/floppy.c for another example how to "register"
a setup function (floppy_setup in this case).
(3) changes required to take advantage of existing MODULE_PARMs:
- make sure your MODULE_PARM definitions are NOT buried
inside some #ifdef MODULE
- add the following line somewhere BEFORE the MODULE_PARM definitions
#define MODULE_TAG foo

Looking over the setup functions and MODUL_PARMs I see that considerable
cruft has accumulated. Several authors have devised there own schemes
to specify and parse command line options. I'm hoping that the proposed
scheme can unify what the user has to specify and also
streamline the parsing.
The following patch is against stock 2.1.76.
Comments and critique welcome, Roderich

"Report all obscene mail to your Potsmaster"
Roderich Schupp mailto:rsch@ExperTeam.de
ExperTeam GmbH http://www.experteam.de/
Munich, Germany Linux: 2.1.76

--0__=ELZK2103LJ57iUdg8o0rS6F8FdNvK5vuy5sI0VeSQC7agF0RijbggF6F
Content-type: application/octet-stream;
name="PATCH.gz"
Content-transfer-encoding: base64

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

--0__=ELZK2103LJ57iUdg8o0rS6F8FdNvK5vuy5sI0VeSQC7agF0RijbggF6F--