*** empty log message ***
[yaffs/.git] / direct / dtest.c
index 7360584906bccd30a3511a7aa47221da98308dda..7f6963823aebe1aa1540fe8b3a809fa0d58e682f 100644 (file)
@@ -81,6 +81,78 @@ void fill_disk_and_delete(char *path, int nfiles, int ncycles)
        }
 }
 
+
+void fill_files(char *path,int flags, int maxIterations,int siz)
+{
+       int i;
+       int j;
+       char str[50];
+       int h;
+       
+       i = 0;
+       
+       do{
+               sprintf(str,"%s/%d",path,i);
+               h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE);
+               yaffs_close(h);
+
+               if(h >= 0)
+               {
+                       for(j = 0; j < siz; j++)
+                       {
+                               yaffs_write(h,str,1);
+                       }
+               }
+               
+               if( flags & 1)
+               {
+                       yaffs_unlink(str);
+               }
+               i++;
+       } while(h >= 0 && i < maxIterations);
+       
+       if(flags & 2)
+       {
+               i = 0;
+               do{
+                       sprintf(str,"%s/%d",path,i);
+                       printf("unlink %s\n",str);
+                       i++;
+               } while(yaffs_unlink(str) >= 0);
+       }
+}
+
+void leave_unlinked_file(char *path,int maxIterations,int siz)
+{
+       int i;
+       char str[50];
+       int h;
+       
+       i = 0;
+       
+       do{
+               sprintf(str,"%s/%d",path,i);
+               printf("create %s\n",str);
+               h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE);
+               if(h >= 0)
+               {
+                       yaffs_unlink(str);
+               }
+               i++;
+       } while(h < 0 && i < maxIterations);
+       
+       if(h >= 0)
+       {
+               for(i = 0; i < siz; i++)
+               {
+                       yaffs_write(h,str,1);
+               }
+       }
+       
+       printf("Leaving file %s open\n",str);
+
+}
+
 void dumpDirFollow(const char *dname)
 {
        yaffs_DIR *d;
@@ -212,9 +284,18 @@ int main(int argc, char *argv[])
        yaffs_StartUp();
        
        yaffs_mount("/boot");
+       yaffs_mount("/data");
+       yaffs_mount("/flash");
        
        printf("\nDirectory look-up of /boot\n");
        dumpDir("/boot");
+       printf("\nDirectory look-up of /data\n");
+       dumpDir("/data");
+       printf("\nDirectory look-up of /flash\n");
+       dumpDir("/flash");
+
+       leave_unlinked_file("/flash",20000,0);
+       leave_unlinked_file("/data",20000,0);
 
        f = yaffs_open("/boot/b1", O_RDONLY,0);
        
@@ -402,6 +483,22 @@ int main(int argc, char *argv[])
        fill_disk_and_delete("/boot",20,20);
        
        yaffs_DumpDevStruct("/boot");
+       
+       fill_files("/boot",1,10000,0);
+       fill_files("/boot",1,10000,5000);
+       fill_files("/boot",2,10000,0);
+       fill_files("/boot",2,10000,5000);
+       
+       leave_unlinked_file("/data",20000,0);
+       leave_unlinked_file("/data",20000,5000);
+       leave_unlinked_file("/data",20000,5000);
+       leave_unlinked_file("/data",20000,5000);
+       leave_unlinked_file("/data",20000,5000);
+       leave_unlinked_file("/data",20000,5000);
+       
+       yaffs_DumpDevStruct("/boot");
+       yaffs_DumpDevStruct("/data");
+       
                
                
        return 0;