kconfig: add short explanation to SYMBOL_WRITE
PATCH 1/4 kconfig: add short explanation to SYMBOL_WRITE
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
--- scripts/kconfig/expr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/kconfig/expr.h +1 -1
@@ -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 */
Signature · 1 line
1.8.1.5
scripts/kconfig/expr.h struct symbol { · line 99
Quoted 13 lines · Martin Walch
scripts/kconfig/expr.h +1
-1@@ -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?
Quoted 7 lines
Quoted 7 lines
scripts/kconfig/expr.h +0
-0@@ -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 */
Quoted 8 lines
scripts/kconfig/expr.h struct symbol { · line 99
Quoted 6 lines
scripts/kconfig/expr.h +1
-1#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:
Quoted 5 lines
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.
Quoted 5 lines · Martin Walch
So, if I have not missed anything,
SYMBOL_WRITEdecides whether to write a symbol to .config or not. This does not necessarily mean that the user can change the value.SYMBOL_WRITEmay 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.
Quoted 3 lines · On Wednesday 02 October 2013 16:42:27 David Rientjes wrote:
The purpose of
SYMBOL_WRITEis insym_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:
Quoted 16 lines
case
S_BOOLEAN:
caseS_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); } } ... }