From: Martin Walch <[email protected]>
Date: Wed, 2 Oct 2013 06:54:27 +0200
Subject: [PATCH 1/4] kconfig: add short explanation to SYMBOL_WRITE
replace the question mark in the comment after SYMBOL_WRITE with an explanation
Signed-off-by: Martin Walch <[email protected]>
---
scripts/kconfig/expr.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index df198a5..ba663e1 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -93,7 +93,7 @@ struct symbol {
#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
-#define SYMBOL_WRITE 0x0200 /* ? */
+#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
#define SYMBOL_CHANGED 0x0400 /* ? */
#define SYMBOL_AUTO 0x1000 /* value from environment variable */
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
--
1.8.1.5
On Wed, 2 Oct 2013, Martin Walch wrote:
> diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
> index df198a5..ba663e1 100644
> --- a/scripts/kconfig/expr.h
> +++ b/scripts/kconfig/expr.h
> @@ -93,7 +93,7 @@ struct symbol {
> #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
> #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
> #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
> -#define SYMBOL_WRITE 0x0200 /* ? */
> +#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
> #define SYMBOL_CHANGED 0x0400 /* ? */
> #define SYMBOL_AUTO 0x1000 /* value from environment variable */
> #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
Perhaps stating that the choice is writable by the user?
> > diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
> > index df198a5..ba663e1 100644
> > --- a/scripts/kconfig/expr.h
> > +++ b/scripts/kconfig/expr.h
> > @@ -93,7 +93,7 @@ struct symbol {
> > #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
> > #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
> > #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
> > -#define SYMBOL_WRITE 0x0200 /* ? */
> > +#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
> > #define SYMBOL_CHANGED 0x0400 /* ? */
> > #define SYMBOL_AUTO 0x1000 /* value from environment variable */
> > #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
>
> Perhaps stating that the choice is writable by the user?
As far as I understand SYMBOL_WRITE, its main purpose is in the function
conf_write in confdata.c:
>if (!(sym->flags & SYMBOL_WRITE))
> goto next;
>sym->flags &= ~SYMBOL_WRITE;
>
>conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
So, if I have not missed anything, SYMBOL_WRITE decides whether to write a symbol
to .config or not. This does not necessarily mean that the user can change the value.
SYMBOL_WRITE may be set and the symbol may be written to .config while the user
does not even see the corresponding prompt.
On Thu, 3 Oct 2013, Martin Walch wrote:
> So, if I have not missed anything, SYMBOL_WRITE decides whether to write a symbol
> to .config or not. This does not necessarily mean that the user can change the value.
> SYMBOL_WRITE may be set and the symbol may be written to .config while the user
> does not even see the corresponding prompt.
>
The purpose of SYMBOL_WRITE is in sym_calc_value() where it is set if the
config symbol is visible and settable by the user, which is why I
suggested it be specified as being writable by the user.
On Wednesday 02 October 2013 16:42:27 David Rientjes wrote:
> The purpose of SYMBOL_WRITE is in sym_calc_value() where it is set if the
> config symbol is visible and settable by the user, which is why I
> suggested it be specified as being writable by the user.
Then this looks strange to me: a config symbol of type boolean or tristate
that is not visible, but has a default value != n will have SYMBOL_WRITE set
in sym_calc_value:
> case S_BOOLEAN:
> case S_TRISTATE:
> if (sym_is_choice_value(sym) && sym->visible == yes) {
> ...
> } else {
> ...
> if (!sym_is_choice(sym)) {
> prop = sym_get_default_prop(sym);
> if (prop) {
> sym->flags |= SYMBOL_WRITE;
> newval.tri = EXPR_AND(expr_calc_value(prop->expr),
> prop->visible.tri);
> }
> }
> ...
> }
--