Re: [PATCH 1/3] kernel: Add a new config option to remove command line parsing

2015-04-09 Thread Tim Bird


On 04/01/2015 07:34 AM, Iulia Manda wrote:
 This patch introduces CONFIG_CMDLINE_PARSE option which conditionally compiles
 the support for parsing kernel command line arguments. The corresponding
 functions that actually do the parsing will be compiled out. 
 
 This is used when no parameters will be specified neither at compile time nor 
 at
 boot time.
 
 Bloat-o-meter output (compared to the preivous version in which builtin 
 cmdline
 was also set to 'Y'):
 
 add/remove: 0/8 grow/shrink: 0/6 up/down: 0/-3669 (-3669)

I think this is great stuff.  (Of course, having research something like this
previously, I'm a bit biased.)

It's very nice to have the Bloat-o-meter output for these kernel size shrinking
patches.

The patch itself looks very straightforward, and I don't see any problems
in a visual inspection.

You can add a Reviewed-by: Tim Bird tim.b...@sonymobile.com to this patch.

I'd like to be able to point people to this on the mailing list.  In the future
can you make sure to CC: linux-ker...@vger.kernel.org, so there's a reference
on lkml.org I can point people to?

Thanks for this great work!
 -- Tim

--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/3] kernel: Add a new config option to remove command line parsing

2015-04-01 Thread Iulia Manda
This patch introduces CONFIG_CMDLINE_PARSE option which conditionally compiles
the support for parsing kernel command line arguments. The corresponding
functions that actually do the parsing will be compiled out. 

This is used when no parameters will be specified neither at compile time nor at
boot time.

Bloat-o-meter output (compared to the preivous version in which builtin cmdline
was also set to 'Y'):

add/remove: 0/8 grow/shrink: 0/6 up/down: 0/-3669 (-3669)
function old new   delta
load_module 55715563  -8
parse_early_param 54  44 -10
parse_early_options   33   5 -28
initcall_level_names  32   - -32
kernel_init_freeable 413 360 -53
unknown_module_param_cb   60   - -60
setup_arch  30412972 -69
set_init_arg  73   - -73
repair_env_string 81   - -81
start_kernel 857 759 -98
do_early_param   117   --117
unknown_bootoption   366   --366
parse_args   626   --626
builtin_cmdline 2048   -   -2048

Signed-off-by: Iulia Manda iulia.mand...@gmail.com
Reviewed-by: Josh Triplett j...@joshtriplett.org
---
 arch/x86/Kconfig| 15 +++
 include/linux/moduleparam.h | 14 ++
 kernel/params.c |  2 ++
 3 files changed, 31 insertions(+)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index c2fb8a8..f1e02ea 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2003,8 +2003,23 @@ config COMPAT_VDSO
  If unsure, say N: if you are compiling your own kernel, you
  are unlikely to be using a buggy version of glibc.
 
+config CMDLINE_PARSE
+   bool Enable support for command line parsing
+   default y
+   ---help---
+ With this option set to 'Y', kernel parameters, both the ones
+ passed at boot time and at compile time are parsed.
+
+ If you say no here, all the kernel parameters' values will be set
+ to their defaults at compile time, in order to make constant
+ folding possible.
+
+ Systems with no space constraints should leave this option set to
+ 'Y'.
+
 config CMDLINE_BOOL
bool Built-in kernel command line
+   depends on CMDLINE_PARSE
---help---
  Allow for specifying boot arguments to the kernel at
  build time.  On some systems (e.g. embedded ones), it is
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 1c9effa..f97397c 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -350,6 +350,7 @@ extern bool parameq(const char *name1, const char *name2);
  */
 extern bool parameqn(const char *name1, const char *name2, size_t n);
 
+#ifdef CONFIG_CMDLINE_PARSE
 /* Called on module insert or kernel boot */
 extern char *parse_args(const char *name,
  char *args,
@@ -359,6 +360,19 @@ extern char *parse_args(const char *name,
  s16 level_max,
  int (*unknown)(char *param, char *val,
  const char *doing));
+#else
+static inline char *parse_args(const char *name,
+ char *args,
+ const struct kernel_param *params,
+ unsigned num,
+ s16 level_min,
+ s16 level_max,
+ int (*unknown)(char *param, char *val,
+ const char *doing))
+{
+return NULL;
+}
+#endif
 
 /* Called by module remove. */
 #ifdef CONFIG_SYSFS
diff --git a/kernel/params.c b/kernel/params.c
index 728e05b..d3bfe47 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -93,6 +93,7 @@ static void param_check_unsafe(const struct kernel_param *kp)
}
 }
 
+#ifdef CONFIG_CMDLINE_PARSE
 static int parse_one(char *param,
 char *val,
 const char *doing,
@@ -239,6 +240,7 @@ char *parse_args(const char *doing,
/* All parsed OK. */
return NULL;
 }
+#endif
 
 /* Lazy bastard, eh? */
 #define STANDARD_PARAM_DEF(name, type, format, strtolfn)   \
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-embedded in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html