Loading scripts/kconfig/confdata.c +70 −0 Original line number Diff line number Diff line Loading @@ -812,3 +812,73 @@ void conf_set_changed_callback(void (*fn)(void)) { conf_changed_callback = fn; } void conf_set_all_new_symbols(enum conf_def_mode mode) { struct symbol *sym, *csym; struct property *prop; struct expr *e; int i, cnt, def; for_all_symbols(i, sym) { if (sym_has_value(sym)) continue; switch (sym_get_type(sym)) { case S_BOOLEAN: case S_TRISTATE: 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: sym->def[S_DEF_USER].tri = no; break; case def_random: sym->def[S_DEF_USER].tri = (tristate)(rand() % 3); break; default: continue; } if (!sym_is_choice(sym) || mode != def_random) sym->flags |= SYMBOL_DEF_USER; break; default: break; } } if (modules_sym) sym_calc_value(modules_sym); if (mode != def_random) return; for_all_symbols(i, csym) { if (sym_has_value(csym) || !sym_is_choice(csym)) continue; sym_calc_value(csym); prop = sym_get_choice_prop(csym); def = -1; while (1) { cnt = 0; expr_list_for_each_sym(prop->expr, e, sym) { if (sym->visible == no) continue; if (def == cnt++) { csym->def[S_DEF_USER].val = sym; break; } } if (def >= 0 || cnt < 2) break; def = (rand() % cnt) + 1; } csym->flags |= SYMBOL_DEF_USER; } } scripts/kconfig/lkc.h +9 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,14 @@ extern "C" { #define TF_PARAM 0x0002 #define TF_OPTION 0x0004 enum conf_def_mode { def_default, def_yes, def_mod, def_no, def_random }; #define T_OPT_MODULES 1 #define T_OPT_DEFCONFIG_LIST 2 #define T_OPT_ENV 3 Loading Loading @@ -69,6 +77,7 @@ const char *conf_get_configname(void); char *conf_get_default_confname(void); void sym_set_change_count(int count); void sym_add_change_count(int count); void conf_set_all_new_symbols(enum conf_def_mode mode); /* kconfig_load.c */ void kconfig_load(void); Loading Loading
scripts/kconfig/confdata.c +70 −0 Original line number Diff line number Diff line Loading @@ -812,3 +812,73 @@ void conf_set_changed_callback(void (*fn)(void)) { conf_changed_callback = fn; } void conf_set_all_new_symbols(enum conf_def_mode mode) { struct symbol *sym, *csym; struct property *prop; struct expr *e; int i, cnt, def; for_all_symbols(i, sym) { if (sym_has_value(sym)) continue; switch (sym_get_type(sym)) { case S_BOOLEAN: case S_TRISTATE: 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: sym->def[S_DEF_USER].tri = no; break; case def_random: sym->def[S_DEF_USER].tri = (tristate)(rand() % 3); break; default: continue; } if (!sym_is_choice(sym) || mode != def_random) sym->flags |= SYMBOL_DEF_USER; break; default: break; } } if (modules_sym) sym_calc_value(modules_sym); if (mode != def_random) return; for_all_symbols(i, csym) { if (sym_has_value(csym) || !sym_is_choice(csym)) continue; sym_calc_value(csym); prop = sym_get_choice_prop(csym); def = -1; while (1) { cnt = 0; expr_list_for_each_sym(prop->expr, e, sym) { if (sym->visible == no) continue; if (def == cnt++) { csym->def[S_DEF_USER].val = sym; break; } } if (def >= 0 || cnt < 2) break; def = (rand() % cnt) + 1; } csym->flags |= SYMBOL_DEF_USER; } }
scripts/kconfig/lkc.h +9 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,14 @@ extern "C" { #define TF_PARAM 0x0002 #define TF_OPTION 0x0004 enum conf_def_mode { def_default, def_yes, def_mod, def_no, def_random }; #define T_OPT_MODULES 1 #define T_OPT_DEFCONFIG_LIST 2 #define T_OPT_ENV 3 Loading Loading @@ -69,6 +77,7 @@ const char *conf_get_configname(void); char *conf_get_default_confname(void); void sym_set_change_count(int count); void sym_add_change_count(int count); void conf_set_all_new_symbols(enum conf_def_mode mode); /* kconfig_load.c */ void kconfig_load(void); Loading