WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] consolidate custom parameter parsing routines lookin

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] consolidate custom parameter parsing routines looking for boolean values
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Thu, 18 Nov 2010 16:57:31 +0000
Delivery-date: Thu, 18 Nov 2010 08:58:38 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Have a single function for this, rather than doing the same in half a
dozen places.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -240,13 +240,18 @@ int cpu_has_amd_erratum(const struct cpu
  * amd_flush_filter={on,off}. Forcibly Enable or disable the TLB flush
  * filter on AMD 64-bit processors.
  */
-static int flush_filter_force;
-static void flush_filter(char *s)
+static int __read_mostly flush_filter_force;
+static void __init flush_filter(char *s)
 {
-       if (!strcmp(s, "off"))
+       switch (parse_bool(s))
+       {
+       case 0:
                flush_filter_force = -1;
-       if (!strcmp(s, "on"))
+               break;
+       case 1:
                flush_filter_force = 1;
+               break;
+       }
 }
 custom_param("amd_flush_filter", flush_filter);
 
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -113,7 +113,7 @@ static void __init parse_acpi_param(char
     safe_strcpy(acpi_param, s);
 
     /* Interpret the parameter for use within Xen. */
-    if ( !strcmp(s, "off") )
+    if ( !parse_bool(s) )
     {
         disable_acpi();
     }
--- a/xen/arch/x86/x86_64/mmconfig-shared.c
+++ b/xen/arch/x86/x86_64/mmconfig-shared.c
@@ -37,8 +37,7 @@ static void __init parse_mmcfg(char *s)
         if ( ss )
             *ss = '\0';
 
-        if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
-             !strcmp(s, "0") || !strcmp(s, "disable") )
+        if ( !parse_bool(s) )
             pci_probe &= ~PCI_PROBE_MMCONF;
         else if ( !strcmp(s, "amd_fam10") || !strcmp(s, "amd-fam10") )
             pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -26,7 +26,7 @@ int tainted;
 
 xen_commandline_t saved_cmdline;
 
-void cmdline_parse(char *cmdline)
+void __init cmdline_parse(char *cmdline)
 {
     char opt[100], *optval, *optkey, *q;
     const char *p = cmdline;
@@ -83,10 +83,7 @@ void cmdline_parse(char *cmdline)
                 break;
             case OPT_BOOL:
             case OPT_INVBOOL:
-                if ( !strcmp("no", optval) ||
-                     !strcmp("off", optval) ||
-                     !strcmp("false", optval) ||
-                     !strcmp("0", optval) )
+                if ( !parse_bool(optval) )
                     bool_assert = !bool_assert;
                 if ( param->type == OPT_INVBOOL )
                     bool_assert = !bool_assert;
@@ -115,6 +112,25 @@ void cmdline_parse(char *cmdline)
     }
 }
 
+int __init parse_bool(const char *s)
+{
+    if ( !strcmp("no", s) ||
+         !strcmp("off", s) ||
+         !strcmp("false", s) ||
+         !strcmp("disable", s) ||
+         !strcmp("0", s) )
+        return 0;
+
+    if ( !strcmp("yes", s) ||
+         !strcmp("on", s) ||
+         !strcmp("true", s) ||
+         !strcmp("enable", s) ||
+         !strcmp("1", s) )
+        return 1;
+
+    return -1;
+}
+
 /**
  *      print_tainted - return a string to represent the kernel taint state.
  *
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -59,8 +59,7 @@ static void __init parse_iommu_param(cha
         if ( ss )
             *ss = '\0';
 
-        if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
-             !strcmp(s, "0") || !strcmp(s, "disable") )
+        if ( !parse_bool(s) )
             iommu_enabled = 0;
         else if ( !strcmp(s, "force") || !strcmp(s, "required") )
             force_iommu = 1;
--- a/xen/drivers/passthrough/vtd/x86/ats.c
+++ b/xen/drivers/passthrough/vtd/x86/ats.c
@@ -58,13 +58,15 @@ static void __init parse_ats_param(char 
         if ( ss )
             *ss = '\0';
 
-        if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
-             !strcmp(s, "0") || !strcmp(s, "disable") )
+        switch ( parse_bool(s) )
+        {
+        case 0:
             ats_enabled = 0;
-
-        if ( !strcmp(s, "on") || !strcmp(s, "yes") || !strcmp(s, "true") ||
-             !strcmp(s, "1") || !strcmp(s, "enable") )
+            break;
+        case 1:
             ats_enabled = 1;
+            break;
+        }
 
         s = ss + 1;
     } while ( ss );
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -57,6 +57,7 @@ do {                                    
 struct domain;
 
 void cmdline_parse(char *cmdline);
+int parse_bool(const char *s);
 
 /*#define DEBUG_TRACE_DUMP*/
 #ifdef DEBUG_TRACE_DUMP


Attachment: cmdline-bool-parse.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] consolidate custom parameter parsing routines looking for boolean values, Jan Beulich <=