diff options
author | Yann E. MORIN <yann.morin.1998@free.fr> | 2013-04-13 16:49:13 -0400 |
---|---|---|
committer | Yann E. MORIN <yann.morin.1998@free.fr> | 2013-04-24 18:16:25 -0400 |
commit | 0d8024c6ebadb68f1154377c2e1996b4e649e4c8 (patch) | |
tree | bd38ec60a908adf8cf7c75aa7b3b19fab52d9e64 | |
parent | 422c809f03f043d0950d8362214818e956a9daee (diff) |
kconfig: allow specifying the seed for randconfig
For reproducibility, it can be useful to be able to specify the
seed to use to seed the RNG.
Add a new KCONFIG_SEED environment variable which can be set to
the seed to use:
$ make KCONFIG_SEED=42 randconfig
$ sha1sum .config
70a128c8dcc61303069e1be352cce64114dfcbca .config
$ make KCONFIG_SEED=42 randconfig
$ sha1sum .config
70a128c8dcc61303069e1be352cce64114dfcbca .config
It's very usefull for eg. debugging the kconfig parser.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-rw-r--r-- | Documentation/kbuild/kconfig.txt | 9 | ||||
-rw-r--r-- | scripts/kconfig/conf.c | 12 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt index b8b77bbc784f..dbf746b70553 100644 --- a/Documentation/kbuild/kconfig.txt +++ b/Documentation/kbuild/kconfig.txt | |||
@@ -90,6 +90,15 @@ disable the options that are explicitly listed in the specified | |||
90 | mini-config files. | 90 | mini-config files. |
91 | 91 | ||
92 | ______________________________________________________________________ | 92 | ______________________________________________________________________ |
93 | Environment variables for 'randconfig' | ||
94 | |||
95 | KCONFIG_SEED | ||
96 | -------------------------------------------------- | ||
97 | You can set this to the integer value used to seed the RNG, if you want | ||
98 | to somehow debug the behaviour of the kconfig parser/frontends. | ||
99 | If not set, the current time will be used. | ||
100 | |||
101 | ______________________________________________________________________ | ||
93 | Environment variables for 'silentoldconfig' | 102 | Environment variables for 'silentoldconfig' |
94 | 103 | ||
95 | KCONFIG_NOSILENTUPDATE | 104 | KCONFIG_NOSILENTUPDATE |
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index e39fcd8143ea..bde5b95c8c19 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <getopt.h> | 13 | #include <getopt.h> |
14 | #include <sys/stat.h> | 14 | #include <sys/stat.h> |
15 | #include <sys/time.h> | 15 | #include <sys/time.h> |
16 | #include <errno.h> | ||
16 | 17 | ||
17 | #include "lkc.h" | 18 | #include "lkc.h" |
18 | 19 | ||
@@ -514,14 +515,23 @@ int main(int ac, char **av) | |||
514 | { | 515 | { |
515 | struct timeval now; | 516 | struct timeval now; |
516 | unsigned int seed; | 517 | unsigned int seed; |
518 | char *seed_env; | ||
517 | 519 | ||
518 | /* | 520 | /* |
519 | * Use microseconds derived seed, | 521 | * Use microseconds derived seed, |
520 | * compensate for systems where it may be zero | 522 | * compensate for systems where it may be zero |
521 | */ | 523 | */ |
522 | gettimeofday(&now, NULL); | 524 | gettimeofday(&now, NULL); |
523 | |||
524 | seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); | 525 | seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); |
526 | |||
527 | seed_env = getenv("KCONFIG_SEED"); | ||
528 | if( seed_env && *seed_env ) { | ||
529 | char *endp; | ||
530 | int tmp = (int)strtol(seed_env, &endp, 10); | ||
531 | if (*endp == '\0') { | ||
532 | seed = tmp; | ||
533 | } | ||
534 | } | ||
525 | srand(seed); | 535 | srand(seed); |
526 | break; | 536 | break; |
527 | } | 537 | } |