From 85530132e169794d9e7e9c1de1396a12bc650383 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 21 Nov 2008 02:19:30 +0000 Subject: [PATCH] Tweaks to nor stress simulation. Save random seed so that we can do better debugging --- direct/Makefile | 4 ++-- direct/dtest.c | 3 ++- direct/nor_stress.c | 10 +++++++--- direct/run_fw_update_test.sh | 9 ++++++--- direct/yaffs_test.c | 11 +++++++++-- direct/ynorsim.c | 3 ++- 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/direct/Makefile b/direct/Makefile index bfd98be..ff9f2e3 100644 --- a/direct/Makefile +++ b/direct/Makefile @@ -14,7 +14,7 @@ # # NB Warning this Makefile does not include header dependencies. # -# $Id: Makefile,v 1.20 2008-11-11 01:48:47 charles Exp $ +# $Id: Makefile,v 1.21 2008-11-21 02:19:30 charles Exp $ #EXTRA_COMPILE_FLAGS = -DYAFFS_IGNORE_TAGS_ECC @@ -22,7 +22,7 @@ CFLAGS = -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM -DCONFIG_Y CFLAGS += -DCONFIG_YAFFS_PROVIDE_DEFS -DCONFIG_YAFFSFS_PROVIDE_VALUES -DNO_Y_INLINE CFLAGS += -Wall -g $(EXTRA_COMPILE_FLAGS) -Wstrict-aliasing #CFLAGS += -fno-strict-aliasing -CFLAGS += -O3 +CFLAGS += -O0 #CFLAGS += -DVALGRIND_TEST #CFLAGS+= -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-declarations diff --git a/direct/dtest.c b/direct/dtest.c index fd4f966..4478cdc 100644 --- a/direct/dtest.c +++ b/direct/dtest.c @@ -2283,10 +2283,11 @@ void random_small_file_test(const char *mountpt,int iterations) } +int random_seed; int main(int argc, char *argv[]) { - + random_seed = time(NULL); //return long_test(argc,argv); //return cache_read_test(); diff --git a/direct/nor_stress.c b/direct/nor_stress.c index 4ac10b1..b370458 100644 --- a/direct/nor_stress.c +++ b/direct/nor_stress.c @@ -290,10 +290,11 @@ static int yVerifyFile(const char *fName) return retval; } -static unsigned long next = 1; +extern int random_seed; + int myrand(void) { - next = next * 1103515245 + 12345; - return((unsigned)(next/65536) % 32768); + random_seed = random_seed * 1103515245 + 12345; + return((unsigned)(random_seed/65536) % 32768); } static void DoUpdateMainFile(void) @@ -344,13 +345,16 @@ void NorStressTestRun(const char *prefix) dump_directory_tree(fullPathName); UpdateCounter(fullPowerUpName,&powerUps,0); + dump_directory_tree(fullPathName); while(1){ UpdateCounter(fullStartName, &cycleStarts,0); + dump_directory_tree(fullPathName); DoVerifyMainFile(); DoUpdateMainFile(); dump_directory_tree(fullPathName); UpdateCounter(fullEndName,&cycleEnds,0); + dump_directory_tree(fullPathName); } } diff --git a/direct/run_fw_update_test.sh b/direct/run_fw_update_test.sh index b08fa84..8ba1530 100755 --- a/direct/run_fw_update_test.sh +++ b/direct/run_fw_update_test.sh @@ -3,10 +3,13 @@ for ((i=0; i < 100000; i++)) do - echo $i > cycle.count + + seed=$RANDOM j=$(( $i % 10 )) - + rm seed*$j + echo $seed>seed$i rm data*$j cp ynorsimdata data$i - ./yaffs_test /M18-1 fw_update + echo "######### Run $i with seed $seed" + ./yaffs_test /M18-1 fw_update $seed done diff --git a/direct/yaffs_test.c b/direct/yaffs_test.c index 381df44..04e3b2a 100644 --- a/direct/yaffs_test.c +++ b/direct/yaffs_test.c @@ -26,20 +26,27 @@ +int random_seed; + void BadUsage(void) { - printf("usage root_dir test_id\n"); + printf("usage root_dir test_id seed \n"); printf(" test_id: fw_update fw_update_init\n"); exit(2); } int main(int argc, const char *argv[]) { yaffs_StartUp(); - if(argc == 3) { + if(argc == 4) { + random_seed = atoi(argv[3]); + if(random_seed <= 0) + BadUsage(); + if(!strcmp(argv[2],"fw_update_init")){ NorStressTestInitialise(argv[1]); } else if(!strcmp(argv[2],"fw_update")){ + printf("Running stress on %s with seed %d\n",argv[1],random_seed); NorStressTestRun(argv[1]); } else diff --git a/direct/ynorsim.c b/direct/ynorsim.c index 3281a2f..6936a9c 100644 --- a/direct/ynorsim.c +++ b/direct/ynorsim.c @@ -39,6 +39,7 @@ static __u32 word[YNORSIM_DEV_SIZE_U32]; +extern int random_seed; static void NorError(void) { @@ -89,7 +90,7 @@ static void ynorsim_Ready(void) { if(initialised) return; - srand(time(NULL)); + srand(random_seed); remaining_ops = 1000000000; remaining_ops = (rand() % 10000) * 3000 * YNORSIM_BIT_CHANGES; ynorsim_RestoreImage(); -- 2.30.2