X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=direct%2Fbasic-test%2Fdtest.c;h=c56e5b2a76063c5e7cd88062ed90956ad6a54685;hb=29670f031af07612737ffe6f6066859e89b67708;hp=b9fc0eafe0fd36c3e6bbbd34a41eb357da6e37c4;hpb=505255d500d864c1689a6752a728b97859605fd0;p=yaffs2.git diff --git a/direct/basic-test/dtest.c b/direct/basic-test/dtest.c index b9fc0ea..c56e5b2 100644 --- a/direct/basic-test/dtest.c +++ b/direct/basic-test/dtest.c @@ -19,15 +19,17 @@ #include #include #include +#include #include "yaffsfs.h" +#include "yaffs_guts.h" /* Only for dumping device innards */ -void dumpDir(const char *dname); +extern int yaffs_traceMask; -char xx[600]; +void dumpDir(const char *dname); -void copy_in_a_file(char *yaffsName,char *inName) +void copy_in_a_file(const char *yaffsName,const char *inName) { int inh,outh; unsigned char buffer[100]; @@ -49,7 +51,7 @@ void copy_in_a_file(char *yaffsName,char *inName) close(inh); } -void make_a_file(char *yaffsName,char bval,int sizeOfFile) +void make_a_file(const char *yaffsName,char bval,int sizeOfFile) { int outh; int i; @@ -177,21 +179,22 @@ void create_file_of_size(const char *fn,int syze) int h; int n; int result; - + int iteration = 0; char xx[200]; - - int iterations = (syze + strlen(fn) -1)/ strlen(fn); - + h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); - while (iterations > 0) + while (syze > 0) { - sprintf(xx,"%s %8d",fn,iterations); + sprintf(xx,"%s %8d",fn,iteration); n = strlen(xx); result = yaffs_write(h,xx,n); - if(result != n) - printf("Wrote %d, should have been %d\n",result,n); - iterations--; + if(result != n){ + printf("Wrote %d, should have been %d. syze is %d\n",result,n,syze); + syze = 0; + } else + syze-=n; + iteration++; } yaffs_close (h); } @@ -397,7 +400,8 @@ void fill_disk(const char *path,int nfiles) int n; int result; int f; - + + static char xx[600]; char str[50]; for(n = 0; n < nfiles; n++) @@ -477,7 +481,7 @@ void fill_files(const char *path,int flags, int maxIterations,int siz) } } -void leave_unlinked_file(char *path,int maxIterations,int siz) +void leave_unlinked_file(const char *path,int maxIterations,int siz) { int i; char str[50]; @@ -1494,7 +1498,7 @@ void long_name_test(const char *mountpt) char name[300]; int result = 0; - int d,f; + int f; // Make a 256 byte name memset(name,0,sizeof(name)); @@ -1598,7 +1602,6 @@ void lookup_test(const char *mountpt) void link_test0(const char *mountpt) { - int i; char namea[300]; char nameb[300]; int result = 0; @@ -2172,7 +2175,7 @@ void small_overwrite_test(const char *mountpt,int nmounts) void seek_overwrite_test(const char *mountpt,int nmounts) { - + static char xx[5000]; char a[30]; int i; @@ -2552,7 +2555,6 @@ void basic_xattr_test(const char *mountpt) int h; int result; int val1; - int valread; yaffs_StartUp(); @@ -2603,7 +2605,6 @@ void big_xattr_test(const char *mountpt) int h; int result; char val[1000]; - char valread[1000]; yaffs_StartUp(); @@ -2639,7 +2640,48 @@ void big_xattr_test(const char *mountpt) list_xattr(name); } + + +void dump_dev_stats(yaffs_Device *dev, const char * str) +{ + printf("%s\n",str); + printf( "space free %d erased %d " + "nand reads %d writes %d erases %d " + "gc all %d passive %d oldestdirty %d blocks %d copies %d \n", + dev->nFreeChunks, dev->nErasedBlocks * dev->param.nChunksPerBlock, + dev->nPageReads, dev->nPageWrites, dev->nBlockErasures, + dev->allGCs, dev->passiveGCs, dev->oldestDirtyGCs, dev->nGCBlocks, dev->nGCCopies); +} + +void test_flash_traffic(const char *mountpt) +{ + char name0[100]; + char name1[100]; + int i; + yaffs_Device *dev; + + yaffs_traceMask = 0; + + yaffs_StartUp(); + + yaffs_mount(mountpt); + dev = yaffs_getdev(mountpt); + + strcpy(name0,mountpt); + strcat(name0,"/x"); + + strcpy(name1,mountpt); + strcat(name1,"/y"); + + dump_dev_stats(dev,"start"); + create_file_of_size(name0,32 * 1024 * 1024); + dump_dev_stats(dev,"32MB written"); + for(i = 0; i < 20; i++) + create_file_of_size(name1,1024 * 1024); + dump_dev_stats(dev,"20x 1MB files written"); + +} int random_seed; int simulate_power_failure; @@ -2693,9 +2735,6 @@ int main(int argc, char *argv[]) //link_test("/flash/flash"); - - - // cache_bypass_bug_test(); //free_space_check(); @@ -2705,7 +2744,9 @@ int main(int argc, char *argv[]) //basic_xattr_test("/yaffs2"); //big_xattr_test("/yaffs2"); - null_name_test("yaffs2"); + //null_name_test("yaffs2"); + + test_flash_traffic("yaffs2"); return 0;