[RFC] kconfig: add a few comments to expr.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Roman.

I have added a few comments to expr.h with the intent
of making it a bit easier to hack on the kconfig backend.

Can I request you to review the comments and add the few
missing bits.

I deleted one unused flag (SYMBOL_PRINTED) - if you
have future plans with it let me now and I will re-add it.

Thanks,
	Sam


diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index a195986..c2153a1 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -63,9 +63,13 @@ enum symbol_type {
 	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
 };
 
+/* enum values are used as index to symbol.def[] */
 enum {
 	S_DEF_USER,		/* main user value */
-	S_DEF_AUTO,
+	S_DEF_AUTO,		/* values read from auto.conf */
+	S_DEF_DEF3,		/* Reserved for UI usage */
+	S_DEF_DEF4,		/* Reserved for UI usage */
+	S_DEF_COUNT
 };
 
 struct symbol {
@@ -73,7 +77,7 @@ struct symbol {
 	char *name;
 	enum symbol_type type;
 	struct symbol_value curr;
-	struct symbol_value def[4];
+	struct symbol_value def[S_DEF_COUNT];
 	tristate visible;
 	int flags;
 	struct property *prop;
@@ -82,42 +86,66 @@ struct symbol {
 
 #define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
 
-#define SYMBOL_CONST		0x0001
-#define SYMBOL_CHECK		0x0008
-#define SYMBOL_CHOICE		0x0010
-#define SYMBOL_CHOICEVAL	0x0020
-#define SYMBOL_PRINTED		0x0040
-#define SYMBOL_VALID		0x0080
-#define SYMBOL_OPTIONAL		0x0100
-#define SYMBOL_WRITE		0x0200
-#define SYMBOL_CHANGED		0x0400
-#define SYMBOL_AUTO		0x1000
-#define SYMBOL_CHECKED		0x2000
-#define SYMBOL_WARNED		0x8000
-#define SYMBOL_DEF		0x10000
-#define SYMBOL_DEF_USER		0x10000
-#define SYMBOL_DEF_AUTO		0x20000
-#define SYMBOL_DEF3		0x40000
-#define SYMBOL_DEF4		0x80000
+/* symbol.flags bits */
+#define SYMBOL_CONST		0x0001    /* symbol is const */
+#define SYMBOL_SPARE_2		0x0002
+#define SYMBOL_SPARE_4		0x0004
+#define SYMBOL_CHECK		0x0008    /* used during dependency checking */
+#define SYMBOL_CHOICE		0x0010    /* symbol represent start of a choice block (null name) */
+#define SYMBOL_CHOICEVAL	0x0020    /* symbol is used as a value in a choice block */
+#define SYMBOL_SPARE_40		0x0040
+#define SYMBOL_VALID		0x0080    /* set when symbol.curr is calculated (and valid) */
+#define SYMBOL_OPTIONAL		0x0100    /* a choice marked optional can have all values equal 'n'
+                                           * Also used for menus ? */
+#define SYMBOL_WRITE		0x0200    /* ? */
+#define SYMBOL_CHANGED		0x0400    /* ? */
+#define SYMBOL_AUTO		0x1000    /* value has been assing by kconfig (from environment variable or modules) */
+#define SYMBOL_CHECKED		0x2000    /* used during dependency checking */
+#define SYMBOL_WARNED		0x8000    /* set when a warning has been issued for this symbol */
+#define SYMBOL_DEF		0x10000   /* First bit of SYMBOL_DEF used to support << */
+#define SYMBOL_DEF_USER		0x10000   /* Data in symbol.def[S_DEF_USER] are valid */
+#define SYMBOL_DEF_AUTO		0x20000   /* Data in symbol.def[S_DEF_AUTO] are valid */
+#define SYMBOL_DEF3		0x40000   /* Data in symbol.def[S_DEF_DEF3] are valid */
+#define SYMBOL_DEF4		0x80000   /* Data in symbol.def[S_DEF_DEF4] are valid */
 
 #define SYMBOL_MAXLENGTH	256
 #define SYMBOL_HASHSIZE		257
 #define SYMBOL_HASHMASK		0xff
 
+/* A property represent the config options that can be associated
+ * with a config "symbol".
+ * Sample:
+ * config FOO
+ *         default y
+ *         prompt "foo prompt"
+ *         select BAR
+ * config BAZ
+ *         int "BAZ Value"
+ *         range 1..255
+ */
 enum prop_type {
-	P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
+	P_UNKNOWN,
+	P_PROMPT,     /* prompt "foo prompt" or "BAZ Value" */
+	P_COMMENT,    /* A text associated with a comment (the prompt of the comment) */
+	P_MENU,       /* The prompt associated with a menuconfig option */
+	P_DEFAULT,    /* default y */
+	P_CHOICE,     /* ? */
+	P_SELECT,     /* select BAR */
+	P_RANGE       /* range 7..100 (for a symbol) */
 };
 
 struct property {
-	struct property *next;
-	struct symbol *sym;
-	enum prop_type type;
-	const char *text;
+	struct property *next;       /* next property in chained list - null if last */
+	struct symbol *sym;          /* the symbol for which the properti is associated */
+	enum prop_type type;         /* type of property */
+	const char *text;            /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
 	struct expr_value visible;
-	struct expr *expr;
-	struct menu *menu;
-	struct file *file;
-	int lineno;
+	struct expr *expr;           /* the optional conditional part of the property */
+	struct menu *menu;           /* the menu the property are associated with
+	                              * valid for: P_SELECT, P_RANGE, P_CHOICE,
+	                              * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
+	struct file *file;           /* In what file was this property defined */
+	int lineno;                  /* At what lineno was this property defined */
 };
 
 #define for_all_properties(sym, st, tok) \
diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
index 262908c..df910cb 100644
--- a/scripts/kconfig/gconf.c
+++ b/scripts/kconfig/gconf.c
@@ -119,8 +119,6 @@ const char *dbg_print_flags(int val)
 		strcat(buf, "choice/");
 	if (val & SYMBOL_CHOICEVAL)
 		strcat(buf, "choiceval/");
-	if (val & SYMBOL_PRINTED)
-		strcat(buf, "printed/");
 	if (val & SYMBOL_VALID)
 		strcat(buf, "valid/");
 	if (val & SYMBOL_OPTIONAL)
-
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux