kconfig: move conf_set_all_new_symbols() to conf.c
authorMasahiro Yamada <masahiroy@kernel.org>
Sat, 13 Mar 2021 19:48:30 +0000 (04:48 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 14 Apr 2021 06:20:14 +0000 (15:20 +0900)
This function is only used in conf.c. Move it there together with the
randomize_choice_values() helper.

Define 'enum conf_def_mode' locally in conf.c as well.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/conf.c
scripts/kconfig/confdata.c
scripts/kconfig/lkc.h

index 89c9ba8..10958f1 100644 (file)
@@ -112,6 +112,199 @@ static void set_randconfig_seed(void)
        srand(seed);
 }
 
+static bool randomize_choice_values(struct symbol *csym)
+{
+       struct property *prop;
+       struct symbol *sym;
+       struct expr *e;
+       int cnt, def;
+
+       /*
+        * If choice is mod then we may have more items selected
+        * and if no then no-one.
+        * In both cases stop.
+        */
+       if (csym->curr.tri != yes)
+               return false;
+
+       prop = sym_get_choice_prop(csym);
+
+       /* count entries in choice block */
+       cnt = 0;
+       expr_list_for_each_sym(prop->expr, e, sym)
+               cnt++;
+
+       /*
+        * find a random value and set it to yes,
+        * set the rest to no so we have only one set
+        */
+       def = rand() % cnt;
+
+       cnt = 0;
+       expr_list_for_each_sym(prop->expr, e, sym) {
+               if (def == cnt++) {
+                       sym->def[S_DEF_USER].tri = yes;
+                       csym->def[S_DEF_USER].val = sym;
+               } else {
+                       sym->def[S_DEF_USER].tri = no;
+               }
+               sym->flags |= SYMBOL_DEF_USER;
+               /* clear VALID to get value calculated */
+               sym->flags &= ~SYMBOL_VALID;
+       }
+       csym->flags |= SYMBOL_DEF_USER;
+       /* clear VALID to get value calculated */
+       csym->flags &= ~SYMBOL_VALID;
+
+       return true;
+}
+
+enum conf_def_mode {
+       def_default,
+       def_yes,
+       def_mod,
+       def_y2m,
+       def_m2y,
+       def_no,
+       def_random
+};
+
+static bool conf_set_all_new_symbols(enum conf_def_mode mode)
+{
+       struct symbol *sym, *csym;
+       int i, cnt;
+       /*
+        * can't go as the default in switch-case below, otherwise gcc whines
+        * about -Wmaybe-uninitialized
+        */
+       int pby = 50; /* probability of bool     = y */
+       int pty = 33; /* probability of tristate = y */
+       int ptm = 33; /* probability of tristate = m */
+       bool has_changed = false;
+
+       if (mode == def_random) {
+               int n, p[3];
+               char *env = getenv("KCONFIG_PROBABILITY");
+
+               n = 0;
+               while (env && *env) {
+                       char *endp;
+                       int tmp = strtol(env, &endp, 10);
+
+                       if (tmp >= 0 && tmp <= 100) {
+                               p[n++] = tmp;
+                       } else {
+                               errno = ERANGE;
+                               perror("KCONFIG_PROBABILITY");
+                               exit(1);
+                       }
+                       env = (*endp == ':') ? endp + 1 : endp;
+                       if (n >= 3)
+                               break;
+               }
+               switch (n) {
+               case 1:
+                       pby = p[0];
+                       ptm = pby / 2;
+                       pty = pby - ptm;
+                       break;
+               case 2:
+                       pty = p[0];
+                       ptm = p[1];
+                       pby = pty + ptm;
+                       break;
+               case 3:
+                       pby = p[0];
+                       pty = p[1];
+                       ptm = p[2];
+                       break;
+               }
+
+               if (pty + ptm > 100) {
+                       errno = ERANGE;
+                       perror("KCONFIG_PROBABILITY");
+                       exit(1);
+               }
+       }
+
+       for_all_symbols(i, sym) {
+               if (sym_has_value(sym) || sym->flags & SYMBOL_VALID)
+                       continue;
+               switch (sym_get_type(sym)) {
+               case S_BOOLEAN:
+               case S_TRISTATE:
+                       has_changed = true;
+                       switch (mode) {
+                       case def_yes:
+                               sym->def[S_DEF_USER].tri = yes;
+                               break;
+                       case def_mod:
+                               sym->def[S_DEF_USER].tri = mod;
+                               break;
+                       case def_no:
+                               if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
+                                       sym->def[S_DEF_USER].tri = yes;
+                               else
+                                       sym->def[S_DEF_USER].tri = no;
+                               break;
+                       case def_random:
+                               sym->def[S_DEF_USER].tri = no;
+                               cnt = rand() % 100;
+                               if (sym->type == S_TRISTATE) {
+                                       if (cnt < pty)
+                                               sym->def[S_DEF_USER].tri = yes;
+                                       else if (cnt < pty + ptm)
+                                               sym->def[S_DEF_USER].tri = mod;
+                               } else if (cnt < pby)
+                                       sym->def[S_DEF_USER].tri = yes;
+                               break;
+                       default:
+                               continue;
+                       }
+                       if (!(sym_is_choice(sym) && mode == def_random))
+                               sym->flags |= SYMBOL_DEF_USER;
+                       break;
+               default:
+                       break;
+               }
+
+       }
+
+       sym_clear_all_valid();
+
+       /*
+        * We have different type of choice blocks.
+        * If curr.tri equals to mod then we can select several
+        * choice symbols in one block.
+        * In this case we do nothing.
+        * If curr.tri equals yes then only one symbol can be
+        * selected in a choice block and we set it to yes,
+        * and the rest to no.
+        */
+       if (mode != def_random) {
+               for_all_symbols(i, csym) {
+                       if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
+                           sym_is_choice_value(csym))
+                               csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
+               }
+       }
+
+       for_all_symbols(i, csym) {
+               if (sym_has_value(csym) || !sym_is_choice(csym))
+                       continue;
+
+               sym_calc_value(csym);
+               if (mode == def_random)
+                       has_changed |= randomize_choice_values(csym);
+               else {
+                       set_all_choice_values(csym);
+                       has_changed = true;
+               }
+       }
+
+       return has_changed;
+}
+
 static void conf_rewrite_mod_or_yes(enum conf_def_mode mode)
 {
        struct symbol *sym;
index a828622..198f709 100644 (file)
@@ -1127,54 +1127,6 @@ void conf_set_changed_callback(void (*fn)(void))
        conf_changed_callback = fn;
 }
 
-static bool randomize_choice_values(struct symbol *csym)
-{
-       struct property *prop;
-       struct symbol *sym;
-       struct expr *e;
-       int cnt, def;
-
-       /*
-        * If choice is mod then we may have more items selected
-        * and if no then no-one.
-        * In both cases stop.
-        */
-       if (csym->curr.tri != yes)
-               return false;
-
-       prop = sym_get_choice_prop(csym);
-
-       /* count entries in choice block */
-       cnt = 0;
-       expr_list_for_each_sym(prop->expr, e, sym)
-               cnt++;
-
-       /*
-        * find a random value and set it to yes,
-        * set the rest to no so we have only one set
-        */
-       def = (rand() % cnt);
-
-       cnt = 0;
-       expr_list_for_each_sym(prop->expr, e, sym) {
-               if (def == cnt++) {
-                       sym->def[S_DEF_USER].tri = yes;
-                       csym->def[S_DEF_USER].val = sym;
-               }
-               else {
-                       sym->def[S_DEF_USER].tri = no;
-               }
-               sym->flags |= SYMBOL_DEF_USER;
-               /* clear VALID to get value calculated */
-               sym->flags &= ~SYMBOL_VALID;
-       }
-       csym->flags |= SYMBOL_DEF_USER;
-       /* clear VALID to get value calculated */
-       csym->flags &= ~(SYMBOL_VALID);
-
-       return true;
-}
-
 void set_all_choice_values(struct symbol *csym)
 {
        struct property *prop;
@@ -1194,131 +1146,3 @@ void set_all_choice_values(struct symbol *csym)
        /* clear VALID to get value calculated */
        csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES);
 }
-
-bool conf_set_all_new_symbols(enum conf_def_mode mode)
-{
-       struct symbol *sym, *csym;
-       int i, cnt, pby, pty, ptm;      /* pby: probability of bool     = y
-                                        * pty: probability of tristate = y
-                                        * ptm: probability of tristate = m
-                                        */
-
-       pby = 50; pty = ptm = 33; /* can't go as the default in switch-case
-                                  * below, otherwise gcc whines about
-                                  * -Wmaybe-uninitialized */
-       if (mode == def_random) {
-               int n, p[3];
-               char *env = getenv("KCONFIG_PROBABILITY");
-               n = 0;
-               while( env && *env ) {
-                       char *endp;
-                       int tmp = strtol( env, &endp, 10 );
-                       if( tmp >= 0 && tmp <= 100 ) {
-                               p[n++] = tmp;
-                       } else {
-                               errno = ERANGE;
-                               perror( "KCONFIG_PROBABILITY" );
-                               exit( 1 );
-                       }
-                       env = (*endp == ':') ? endp+1 : endp;
-                       if( n >=3 ) {
-                               break;
-                       }
-               }
-               switch( n ) {
-               case 1:
-                       pby = p[0]; ptm = pby/2; pty = pby-ptm;
-                       break;
-               case 2:
-                       pty = p[0]; ptm = p[1]; pby = pty + ptm;
-                       break;
-               case 3:
-                       pby = p[0]; pty = p[1]; ptm = p[2];
-                       break;
-               }
-
-               if( pty+ptm > 100 ) {
-                       errno = ERANGE;
-                       perror( "KCONFIG_PROBABILITY" );
-                       exit( 1 );
-               }
-       }
-       bool has_changed = false;
-
-       for_all_symbols(i, sym) {
-               if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID))
-                       continue;
-               switch (sym_get_type(sym)) {
-               case S_BOOLEAN:
-               case S_TRISTATE:
-                       has_changed = true;
-                       switch (mode) {
-                       case def_yes:
-                               sym->def[S_DEF_USER].tri = yes;
-                               break;
-                       case def_mod:
-                               sym->def[S_DEF_USER].tri = mod;
-                               break;
-                       case def_no:
-                               if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
-                                       sym->def[S_DEF_USER].tri = yes;
-                               else
-                                       sym->def[S_DEF_USER].tri = no;
-                               break;
-                       case def_random:
-                               sym->def[S_DEF_USER].tri = no;
-                               cnt = rand() % 100;
-                               if (sym->type == S_TRISTATE) {
-                                       if (cnt < pty)
-                                               sym->def[S_DEF_USER].tri = yes;
-                                       else if (cnt < (pty+ptm))
-                                               sym->def[S_DEF_USER].tri = mod;
-                               } else if (cnt < pby)
-                                       sym->def[S_DEF_USER].tri = yes;
-                               break;
-                       default:
-                               continue;
-                       }
-                       if (!(sym_is_choice(sym) && mode == def_random))
-                               sym->flags |= SYMBOL_DEF_USER;
-                       break;
-               default:
-                       break;
-               }
-
-       }
-
-       sym_clear_all_valid();
-
-       /*
-        * We have different type of choice blocks.
-        * If curr.tri equals to mod then we can select several
-        * choice symbols in one block.
-        * In this case we do nothing.
-        * If curr.tri equals yes then only one symbol can be
-        * selected in a choice block and we set it to yes,
-        * and the rest to no.
-        */
-       if (mode != def_random) {
-               for_all_symbols(i, csym) {
-                       if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
-                           sym_is_choice_value(csym))
-                               csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
-               }
-       }
-
-       for_all_symbols(i, csym) {
-               if (sym_has_value(csym) || !sym_is_choice(csym))
-                       continue;
-
-               sym_calc_value(csym);
-               if (mode == def_random)
-                       has_changed |= randomize_choice_values(csym);
-               else {
-                       set_all_choice_values(csym);
-                       has_changed = true;
-               }
-       }
-
-       return has_changed;
-}
index f946ab4..1c15e3c 100644 (file)
@@ -34,16 +34,6 @@ static inline const char *CONFIG_prefix(void)
 #undef CONFIG_
 #define CONFIG_ CONFIG_prefix()
 
-enum conf_def_mode {
-       def_default,
-       def_yes,
-       def_mod,
-       def_y2m,
-       def_m2y,
-       def_no,
-       def_random
-};
-
 extern int yylineno;
 void zconfdump(FILE *out);
 void zconf_starthelp(void);
@@ -57,7 +47,6 @@ const char *zconf_curname(void);
 const char *conf_get_configname(void);
 void sym_set_change_count(int count);
 void sym_add_change_count(int count);
-bool conf_set_all_new_symbols(enum conf_def_mode mode);
 void set_all_choice_values(struct symbol *csym);
 
 /* confdata.c and expr.c */