aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorYann E. MORIN <yann.morin.1998@free.fr>2013-04-13 16:49:13 -0400
committerYann E. MORIN <yann.morin.1998@free.fr>2013-04-24 18:16:25 -0400
commit0d8024c6ebadb68f1154377c2e1996b4e649e4c8 (patch)
treebd38ec60a908adf8cf7c75aa7b3b19fab52d9e64 /scripts
parent422c809f03f043d0950d8362214818e956a9daee (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>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/kconfig/conf.c12
1 files changed, 11 insertions, 1 deletions
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 }