140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project/* 240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project* Test code for the "direct" interface. 340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project*/ 440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include <stdio.h> 740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include <string.h> 840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include <unistd.h> 940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include <fcntl.h> 1040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 1140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include "yaffsfs.h" 1240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 1340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid dumpDir(const char *dname); 1440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 1540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectchar xx[600]; 1640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 1740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid copy_in_a_file(char *yaffsName,char *inName) 1840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 1940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int inh,outh; 2040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project unsigned char buffer[100]; 2140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int ni,no; 2240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project inh = open(inName,O_RDONLY); 2340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project outh = yaffs_open(yaffsName, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 2440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 2540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while((ni = read(inh,buffer,100)) > 0) 2640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 2740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project no = yaffs_write(outh,buffer,ni); 2840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(ni != no) 2940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 3040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("problem writing yaffs file\n"); 3140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 3240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 3340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 3440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 3540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(outh); 3640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project close(inh); 3740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 3840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 3940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid make_a_file(char *yaffsName,char bval,int sizeOfFile) 4040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 4140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int outh; 4240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 4340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project unsigned char buffer[100]; 4440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 4540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project outh = yaffs_open(yaffsName, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 4640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 4740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer,bval,100); 4840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 4940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do{ 5040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = sizeOfFile; 5140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(i > 100) i = 100; 5240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sizeOfFile -= i; 5340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 5440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(outh,buffer,i); 5540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 5640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } while (sizeOfFile > 0); 5740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 5840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 5940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(outh); 6040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 6140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 6240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 6340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid make_pattern_file(char *fn,int size) 6440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 6540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int outh; 6640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int marker; 6740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 6840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project outh = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 6940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(outh,size-1,SEEK_SET); 7040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(outh,"A",1); 7140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 7240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < size; i+=256) 7340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 7440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project marker = ~i; 7540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(outh,i,SEEK_SET); 7640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(outh,&marker,sizeof(marker)); 7740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 7840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(outh); 7940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 8040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 8140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 8240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint check_pattern_file(char *fn) 8340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 8440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 8540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int marker; 8640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 8740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int size; 8840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int ok = 1; 8940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 9040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_RDWR,0); 9140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project size = yaffs_lseek(h,0,SEEK_END); 9240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 9340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < size; i+=256) 9440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 9540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(h,i,SEEK_SET); 9640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(h,&marker,sizeof(marker)); 9740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project ok = (marker == ~i); 9840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!ok) 9940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 10040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("pattern check failed on file %s, size %d at position %d. Got %x instead of %x\n", 10140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fn,size,i,marker,~i); 10240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 10340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 10440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 10540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return ok; 10640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 10740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 10840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 10940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 11040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 11140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 11240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint dump_file_data(char *fn) 11340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 11440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 11540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int marker; 11640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i = 0; 11740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int size; 11840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int ok = 1; 11940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project unsigned char b; 12040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 12140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_RDWR,0); 12240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 12340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 12440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%s\n",fn); 12540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(yaffs_read(h,&b,1)> 0) 12640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 12740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%02x",b); 12840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i++; 12940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(i > 32) 13040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 13140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 13240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = 0;; 13340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 13440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 13540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 13640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 13740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return ok; 13840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 13940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 14040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 14140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 14240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid dump_file(const char *fn) 14340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 14440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 14540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int size; 14640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 14740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 14840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn,O_RDONLY,0); 14940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(h < 0) 15040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 15140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("*****\nDump file %s does not exist\n",fn); 15240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 15340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 15440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 15540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project size = yaffs_lseek(h,0,SEEK_SET); 15640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("*****\nDump file %s size %d\n",fn,size); 15740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < size; i++) 15840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 15940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 16040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 16140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 16240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 16340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 16440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid create_file_of_size(const char *fn,int syze) 16540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 16640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 16740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int n; 16840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 16940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char xx[200]; 17040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 17140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int iterations = (syze + strlen(fn) -1)/ strlen(fn); 17240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 17340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 17440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 17540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while (iterations > 0) 17640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 17740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(xx,"%s %8d",fn,iterations); 17840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,xx,strlen(xx)); 17940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations--; 18040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 18140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close (h); 18240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 18340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 18440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid verify_file_of_size(const char *fn,int syze) 18540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 18640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 18740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int n; 18840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 18940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char xx[200]; 19040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char yy[200]; 19140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int l; 19240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 19340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int iterations = (syze + strlen(fn) -1)/ strlen(fn); 19440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 19540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_RDONLY, S_IREAD | S_IWRITE); 19640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 19740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while (iterations > 0) 19840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 19940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(xx,"%s %8d",fn,iterations); 20040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project l = strlen(xx); 20140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 20240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(h,yy,l); 20340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yy[l] = 0; 20440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 20540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(strcmp(xx,yy)){ 20640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("=====>>>>> verification of file %s failed near position %d\n",fn,yaffs_lseek(h,0,SEEK_CUR)); 20740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 20840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations--; 20940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 21040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close (h); 21140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 21240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 21340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid create_resized_file_of_size(const char *fn,int syze1,int reSyze, int syze2) 21440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 21540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 21640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int n; 21740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 21840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 21940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int iterations; 22040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 22140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 22240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 22340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations = (syze1 + strlen(fn) -1)/ strlen(fn); 22440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while (iterations > 0) 22540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 22640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,fn,strlen(fn)); 22740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations--; 22840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 22940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 23040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_truncate(h,reSyze); 23140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 23240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(h,0,SEEK_SET); 23340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations = (syze2 + strlen(fn) -1)/ strlen(fn); 23440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while (iterations > 0) 23540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 23640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,fn,strlen(fn)); 23740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project iterations--; 23840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 23940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 24040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close (h); 24140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 24240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 24340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 24440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid do_some_file_stuff(const char *path) 24540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 24640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 24740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[100]; 24840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 24940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%s",path,"f1"); 25040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project create_file_of_size(fn,10000); 25140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 25240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%s",path,"fdel"); 25340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project create_file_of_size(fn,10000); 25440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(fn); 25540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 25640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%s",path,"f2"); 25740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 25840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project create_resized_file_of_size(fn,10000,3000,4000); 25940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 26040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 26140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid yaffs_backward_scan_test(const char *path) 26240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 26340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[100]; 26440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 26540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 26640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 26740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 26840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 26940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do_some_file_stuff(path); 27040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 27140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/ddd",path); 27240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 27340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(fn,0); 27440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 27540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do_some_file_stuff(fn); 27640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 27740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(path); 27840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 27940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 28040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 28140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 28240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectchar xxzz[2000]; 28340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 28440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 28540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid yaffs_device_flush_test(const char *path) 28640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 28740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[100]; 28840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 28940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 29040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 29140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 29240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 29340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 29440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 29540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do_some_file_stuff(path); 29640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 29740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Open and add some data to a few files 29840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 10; i++) { 29940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 30040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/ff%d",path,i); 30140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 30240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IWRITE | S_IREAD); 30340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,xxzz,2000); 30440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,xxzz,2000); 30540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 30640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(path); 30740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 30840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 30940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 31040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 31140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 31240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 31340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid short_scan_test(const char *path, int fsize, int niterations) 31440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 31540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 31640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[100]; 31740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 31840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%s",path,"f1"); 31940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 32040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 32140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < niterations; i++) 32240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 32340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n*****************\nIteration %d\n",i); 32440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 32540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nmount: Directory look-up of %s\n",path); 32640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir(path); 32740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_a_file(fn,1,fsize); 32840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(path); 32940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 33040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 33140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 33240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 33340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 33440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid scan_pattern_test(const char *path, int fsize, int niterations) 33540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 33640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 33740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 33840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[3][100]; 33940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int result; 34040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 34140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn[0],"%s/%s",path,"f0"); 34240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn[1],"%s/%s",path,"f1"); 34340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn[2],"%s/%s",path,"f2"); 34440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 34540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 34640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 34740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < niterations; i++) 34840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 34940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n*****************\nIteration %d\n",i); 35040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 35140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nmount: Directory look-up of %s\n",path); 35240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir(path); 35340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 3; j++) 35440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 35540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = dump_file_data(fn[j]); 35640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = check_pattern_file(fn[j]); 35740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_pattern_file(fn[j],fsize); 35840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = dump_file_data(fn[j]); 35940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = check_pattern_file(fn[j]); 36040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 36140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(path); 36240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 36340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 36440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 36540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid fill_disk(char *path,int nfiles) 36640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 36740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 36840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int n; 36940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int result; 37040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f; 37140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 37240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[50]; 37340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 37440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(n = 0; n < nfiles; n++) 37540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 37640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,n); 37740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 37840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(str, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 37940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 38040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("writing file %s handle %d ",str, h); 38140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 38240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while ((result = yaffs_write(h,xx,600)) == 600) 38340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 38440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_freespace(path); 38540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 38640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = yaffs_close(h); 38740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf(" close %d\n",result); 38840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 38940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 39040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 39140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid fill_disk_and_delete(char *path, int nfiles, int ncycles) 39240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 39340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i,j; 39440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[50]; 39540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int result; 39640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 39740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < ncycles; i++) 39840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 39940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("@@@@@@@@@@@@@@ cycle %d\n",i); 40040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_disk(path,nfiles); 40140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 40240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < nfiles; j++) 40340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 40440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,j); 40540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = yaffs_unlink(str); 40640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("unlinking file %s, result %d\n",str,result); 40740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 40840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 40940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 41040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 41140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 41240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid fill_files(char *path,int flags, int maxIterations,int siz) 41340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 41440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 41540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 41640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[50]; 41740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 41840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 41940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = 0; 42040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 42140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do{ 42240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,i); 42340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE); 42440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 42540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 42640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(h >= 0) 42740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 42840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < siz; j++) 42940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 43040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,str,1); 43140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 43240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 43340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 43440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if( flags & 1) 43540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 43640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(str); 43740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 43840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i++; 43940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } while(h >= 0 && i < maxIterations); 44040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 44140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(flags & 2) 44240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 44340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = 0; 44440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do{ 44540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,i); 44640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("unlink %s\n",str); 44740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i++; 44840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } while(yaffs_unlink(str) >= 0); 44940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 45040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 45140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 45240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid leave_unlinked_file(char *path,int maxIterations,int siz) 45340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 45440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 45540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[50]; 45640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 45740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 45840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = 0; 45940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 46040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do{ 46140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,i); 46240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("create %s\n",str); 46340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE); 46440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(h >= 0) 46540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 46640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(str); 46740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 46840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i++; 46940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } while(h < 0 && i < maxIterations); 47040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 47140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(h >= 0) 47240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 47340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < siz; i++) 47440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 47540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,str,1); 47640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 47740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 47840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 47940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Leaving file %s open\n",str); 48040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 48140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 48240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 48340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid dumpDirFollow(const char *dname) 48440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 48540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DIR *d; 48640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_dirent *de; 48740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat s; 48840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[100]; 48940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 49040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project d = yaffs_opendir(dname); 49140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 49240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!d) 49340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 49440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("opendir failed\n"); 49540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 49640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 49740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 49840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while((de = yaffs_readdir(d)) != NULL) 49940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 50040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%s",dname,de->d_name); 50140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 50240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_stat(str,&s); 50340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 50440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%s length %d mode %X ",de->d_name,(int)s.st_size,s.st_mode); 50540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project switch(s.st_mode & S_IFMT) 50640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 50740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFREG: printf("data file"); break; 50840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFDIR: printf("directory"); break; 50940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFLNK: printf("symlink -->"); 51040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(yaffs_readlink(str,str,100) < 0) 51140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("no alias"); 51240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 51340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\"%s\"",str); 51440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project break; 51540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project default: printf("unknown"); break; 51640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 51740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 51840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 51940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 52040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 52140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_closedir(d); 52240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 52340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 52440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 52540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname)); 52640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 52740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 52840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 52940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 53040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid dump_directory_tree_worker(const char *dname,int recursive) 53140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 53240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DIR *d; 53340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_dirent *de; 53440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat s; 53540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[100]; 53640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 53740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project d = yaffs_opendir(dname); 53840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 53940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!d) 54040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 54140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("opendir failed\n"); 54240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 54340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 54440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 54540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while((de = yaffs_readdir(d)) != NULL) 54640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 54740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%s",dname,de->d_name); 54840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 54940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lstat(str,&s); 55040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 55140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%s length %d mode %X ",str,(int)s.st_size,s.st_mode); 55240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project switch(s.st_mode & S_IFMT) 55340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 55440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFREG: printf("data file"); break; 55540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFDIR: printf("directory"); break; 55640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFLNK: printf("symlink -->"); 55740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(yaffs_readlink(str,str,100) < 0) 55840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("no alias"); 55940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 56040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\"%s\"",str); 56140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project break; 56240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project default: printf("unknown"); break; 56340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 56440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 56540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 56640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 56740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if((s.st_mode & S_IFMT) == S_IFDIR && recursive) 56840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree_worker(str,1); 56940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 57040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 57140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 57240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_closedir(d); 57340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 57440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 57540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 57640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 57740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectstatic void dump_directory_tree(const char *dname) 57840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 57940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree_worker(dname,1); 58040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 58140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname)); 58240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 58340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 58440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid dumpDir(const char *dname) 58540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ dump_directory_tree_worker(dname,0); 58640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 58740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname)); 58840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 58940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 59040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 59140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectstatic void PermissionsCheck(const char *path, mode_t tmode, int tflags,int expectedResult) 59240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 59340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int fd; 59440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 59540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(yaffs_chmod(path,tmode)< 0) printf("chmod failed\n"); 59640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 59740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fd = yaffs_open(path,tflags,0); 59840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 59940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if((fd >= 0) != (expectedResult > 0)) 60040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 60140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Permissions check %x %x %d failed\n",tmode,tflags,expectedResult); 60240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 60340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 60440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 60540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Permissions check %x %x %d OK\n",tmode,tflags,expectedResult); 60640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 60740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 60840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 60940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(fd); 61040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 61140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 61240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 61340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 61440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint long_test(int argc, char *argv[]) 61540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 61640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 61740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f; 61840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 61940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char buffer[20]; 62040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 62140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[100]; 62240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 62340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 62440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project mode_t temp_mode; 62540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat ystat; 62640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 62740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 62840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 62940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/boot"); 63040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/data"); 63140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/flash"); 63240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/ram"); 63340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 63440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 63540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 63640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /data\n"); 63740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/data"); 63840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /flash\n"); 63940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/flash"); 64040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 64140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //leave_unlinked_file("/flash",20000,0); 64240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //leave_unlinked_file("/data",20000,0); 64340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 64440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/ram",20,0); 64540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 64640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 64740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_open("/boot/b1", O_RDONLY,0); 64840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 64940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("open /boot/b1 readonly, f=%d\n",f); 65040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 65140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_open("/boot/b1", O_CREAT,S_IREAD | S_IWRITE); 65240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 65340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("open /boot/b1 O_CREAT, f=%d\n",f); 65440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 65540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 65640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(f,"hello",1); 65740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("write %d attempted to write to a read-only file\n",r); 65840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 65940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_close(f); 66040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 66140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("close %d\n",r); 66240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 66340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_open("/boot/b1", O_RDWR,0); 66440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 66540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("open /boot/b1 O_RDWR,f=%d\n",f); 66640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 66740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 66840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(f,"hello",2); 66940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("write %d attempted to write to a writeable file\n",r); 67040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(f,"world",3); 67140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("write %d attempted to write to a writeable file\n",r); 67240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 67340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r= yaffs_lseek(f,0,SEEK_END); 67440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("seek end %d\n",r); 67540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer,0,20); 67640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(f,buffer,10); 67740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read %d \"%s\"\n",r,buffer); 67840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r= yaffs_lseek(f,0,SEEK_SET); 67940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("seek set %d\n",r); 68040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer,0,20); 68140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(f,buffer,10); 68240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read %d \"%s\"\n",r,buffer); 68340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer,0,20); 68440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(f,buffer,10); 68540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read %d \"%s\"\n",r,buffer); 68640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 68740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check values reading at end. 68840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // A read past end of file should return 0 for 0 bytes read. 68940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 69040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r= yaffs_lseek(f,0,SEEK_END); 69140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(f,buffer,10); 69240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read at end returned %d\n",r); 69340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r= yaffs_lseek(f,500,SEEK_END); 69440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(f,buffer,10); 69540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read past end returned %d\n",r); 69640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 69740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_close(f); 69840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 69940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("close %d\n",r); 70040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 70140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project copy_in_a_file("/boot/yyfile","xxx"); 70240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 70340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Create a file with a long name 70440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 70540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project copy_in_a_file("/boot/file with a long name","xxx"); 70640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 70740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 70840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 70940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 71040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 71140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check stat 71240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_stat("/boot/file with a long name",&ystat); 71340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 71440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check rename 71540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 71640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_rename("/boot/file with a long name","/boot/r1"); 71740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 71840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 71940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 72040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 72140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check unlink 72240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_unlink("/boot/r1"); 72340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 72440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 72540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 72640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 72740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check mkdir 72840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 72940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_mkdir("/boot/directory1",0); 73040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 73140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 73240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 73340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot/directory1\n"); 73440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot/directory1"); 73540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 73640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // add a file to the directory 73740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project copy_in_a_file("/boot/directory1/file with a long name","xxx"); 73840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 73940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 74040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 74140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot/directory1\n"); 74240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot/directory1"); 74340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 74440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Attempt to delete directory (should fail) 74540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 74640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_rmdir("/boot/directory1"); 74740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 74840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 74940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 75040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot/directory1\n"); 75140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot/directory1"); 75240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 75340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Delete file first, then rmdir should work 75440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_unlink("/boot/directory1/file with a long name"); 75540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_rmdir("/boot/directory1"); 75640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 75740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 75840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 75940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 76040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot/directory1\n"); 76140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot/directory1"); 76240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 76340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#if 0 76440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_disk_and_delete("/boot",20,20); 76540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 76640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 76740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 76840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif 76940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_symlink("yyfile","/boot/slink"); 77140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_readlink("/boot/slink",str,100); 77340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("symlink alias is %s\n",str); 77440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 77840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 77940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 78040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot (using stat instead of lstat)\n"); 78140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDirFollow("/boot"); 78240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot/directory1\n"); 78340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot/directory1"); 78440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 78540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open("/boot/slink",O_RDWR,0); 78640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 78740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("file length is %d\n",(int)yaffs_lseek(h,0,SEEK_END)); 78840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 78940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 79040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 79140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink("/boot/slink"); 79240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 79340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 79440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 79540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 79640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 79740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Check chmod 79840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 79940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_stat("/boot/yyfile",&ystat); 80040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project temp_mode = ystat.st_mode; 80140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 80240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_chmod("/boot/yyfile",0x55555); 80340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 80440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 80540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 80640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_chmod("/boot/yyfile",temp_mode); 80740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /boot\n"); 80840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/boot"); 80940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 81040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Permission checks... 81140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",0, O_WRONLY,0); 81240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",0, O_RDONLY,0); 81340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",0, O_RDWR,0); 81440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 81540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD, O_WRONLY,0); 81640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD, O_RDONLY,1); 81740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD, O_RDWR,0); 81840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 81940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IWRITE, O_WRONLY,1); 82040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IWRITE, O_RDONLY,0); 82140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IWRITE, O_RDWR,0); 82240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 82340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_WRONLY,1); 82440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_RDONLY,1); 82540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_RDWR,1); 82640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 82740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_chmod("/boot/yyfile",temp_mode); 82840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 82940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //create a zero-length file and unlink it (test for scan bug) 83040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 83140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open("/boot/zlf",O_CREAT | O_TRUNC | O_RDWR,0); 83240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 83340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 83440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink("/boot/zlf"); 83540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 83640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 83740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DumpDevStruct("/boot"); 83840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 83940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_disk_and_delete("/boot",20,20); 84040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 84140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DumpDevStruct("/boot"); 84240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 84340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_files("/boot",1,10000,0); 84440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_files("/boot",1,10000,5000); 84540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_files("/boot",2,10000,0); 84640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_files("/boot",2,10000,5000); 84740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 84840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,0); 84940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,5000); 85040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,5000); 85140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,5000); 85240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,5000); 85340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project leave_unlinked_file("/data",20000,5000); 85440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 85540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DumpDevStruct("/boot"); 85640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DumpDevStruct("/data"); 85740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 85840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 85940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 86040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 86140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 86240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 86340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 86440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint huge_directory_test_on_path(char *path) 86540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 86640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 86740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DIR *d; 86840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_dirent *de; 86940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat s; 87040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 87140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f; 87240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 87340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 87440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int total = 0; 87540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int lastTotal = 0; 87640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char buffer[20]; 87740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 87840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[100]; 87940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char name[100]; 88040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char name2[100]; 88140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 88240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 88340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project mode_t temp_mode; 88440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat ystat; 88540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 88640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 88740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 88840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 88940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 89040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Create a large number of files 89140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 89240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 2000; i++) 89340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 89440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%d",path,i); 89540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 89640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_open(str,O_CREAT,S_IREAD | S_IWRITE); 89740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(f); 89840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 89940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 90040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 90140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 90240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project d = yaffs_opendir(path); 90340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = 0; 90440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if (d) { 90540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while((de = yaffs_readdir(d)) != NULL) { 90640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if (total >lastTotal+100*9*1024||(i & 1023)==0){ 90740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("files = %d, total = %d\n",i, total); 90840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project lastTotal = total; 90940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 91040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i++; 91140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(str,"%s/%s",path,de->d_name); 91240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lstat(str,&s); 91340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project switch(s.st_mode & S_IFMT){ 91440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project case S_IFREG: 91540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //printf("data file"); 91640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project total += s.st_size; 91740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project break; 91840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 91940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 92040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 92140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_closedir(d); 92240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 92340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 92440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 92540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 92640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 92740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_scan_test(const char *path) 92840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 92940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 93040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 93140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 93240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid rename_over_test(const char *mountpt) 93340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 93440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 93540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[100]; 93640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[100]; 93740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 93840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/a",mountpt); 93940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/b",mountpt); 94040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 94140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 94240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 94340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 94440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, 0); 94540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(i); 94640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = yaffs_open(b,O_CREAT | O_TRUNC | O_RDWR, 0); 94740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(i); 94840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rename(a,b); // rename over 94940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rename(b,a); // rename back again (not renaimng over) 95040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rename(a,b); // rename back again (not renaimng over) 95140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 95240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 95340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 95440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 95540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 95640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 95740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint resize_stress_test(const char *path) 95840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 95940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a,b,i,j; 96040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int x; 96140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 96240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char aname[100]; 96340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bname[100]; 96440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 96540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char abuffer[1000]; 96640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bbuffer[1000]; 96740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 96840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 96940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 97040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 97140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 97240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(aname,"%s%s",path,"/a"); 97340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(bname,"%s%s",path,"/b"); 97440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 97540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(abuffer,'a',1000); 97640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(bbuffer,'b',1000); 97740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 97840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 97940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 98040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 98140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf(" %s %d %s %d\n",aname,a,bname,b); 98240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 98340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x = 0; 98440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 98540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 100; j++) 98640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 98740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_END); 98840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 98940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 99040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i <20000; i++) 99140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 99240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_lseek(b,i,SEEK_SET); 99340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_write(b,bbuffer,1000); 99440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 99540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(x & 0x16) 99640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 99740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // shrink 99840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int syz = yaffs_lseek(a,0,SEEK_END); 99940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 100040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz -= 500; 100140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(syz < 0) syz = 0; 100240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_truncate(a,syz); 100340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 100440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 100540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 100640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 100740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //expand 100840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_lseek(a,i * 500,SEEK_SET); 100940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(a,abuffer,1000); 101040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 101140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x++; 101240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 101340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 101440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 101540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 101640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 101740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 101840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 101940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 102040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 102140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint resize_stress_test_no_grow_complex(const char *path,int iters) 102240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 102340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a,b,i,j; 102440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int x; 102540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 102640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char aname[100]; 102740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bname[100]; 102840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 102940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char abuffer[1000]; 103040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bbuffer[1000]; 103140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 103240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 103340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 103440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 103540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 103640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(aname,"%s%s",path,"/a"); 103740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(bname,"%s%s",path,"/b"); 103840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 103940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(abuffer,'a',1000); 104040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(bbuffer,'b',1000); 104140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 104240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 104340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 104440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 104540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf(" %s %d %s %d\n",aname,a,bname,b); 104640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 104740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x = 0; 104840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 104940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < iters; j++) 105040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 105140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_END); 105240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 105340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 105440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i <20000; i++) 105540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 105640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_lseek(b,i,SEEK_SET); 105740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_write(b,bbuffer,1000); 105840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 105940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!(x%20)) 106040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 106140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // shrink 106240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int syz = yaffs_lseek(a,0,SEEK_END); 106340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 106440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(syz > 4000) 106540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 106640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 106740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz -= 2050; 106840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(syz < 0) syz = 0; 106940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_truncate(a,syz); 107040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz = yaffs_lseek(a,0,SEEK_END); 107140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("shrink to %d\n",syz); 107240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 107340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 107440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 107540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 107640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 107740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 107840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //expand 107940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_lseek(a,500,SEEK_END); 108040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(a,abuffer,1000); 108140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 108240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x++; 108340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 108440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 108540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 108640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("file size is %d\n",yaffs_lseek(a,0,SEEK_END)); 108740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 108840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 108940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 109040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 109140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 109240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 109340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 109440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint resize_stress_test_no_grow(const char *path,int iters) 109540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 109640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a,b,i,j; 109740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int x; 109840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 109940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char aname[100]; 110040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bname[100]; 110140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 110240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char abuffer[1000]; 110340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char bbuffer[1000]; 110440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 110540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 110640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 110740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(path); 110840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 110940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(aname,"%s%s",path,"/a"); 111040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(bname,"%s%s",path,"/b"); 111140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 111240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(abuffer,'a',1000); 111340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(bbuffer,'b',1000); 111440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 111540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 111640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 111740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 111840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf(" %s %d %s %d\n",aname,a,bname,b); 111940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 112040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x = 0; 112140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 112240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < iters; j++) 112340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 112440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_END); 112540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 112640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 112740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i <20000; i++) 112840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 112940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_lseek(b,i,SEEK_SET); 113040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //r = yaffs_write(b,bbuffer,1000); 113140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 113240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!(x%20)) 113340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 113440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // shrink 113540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int syz = yaffs_lseek(a,0,SEEK_END); 113640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 113740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(syz > 4000) 113840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 113940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 114040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz -= 2050; 114140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(syz < 0) syz = 0; 114240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_truncate(a,syz); 114340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz = yaffs_lseek(a,0,SEEK_END); 114440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("shrink to %d\n",syz); 114540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 114640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 114740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 114840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 114940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 115040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 115140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //expand 115240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_lseek(a,-500,SEEK_END); 115340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_write(a,abuffer,1000); 115440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 115540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project x++; 115640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 115740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 115840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 115940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("file size is %d\n",yaffs_lseek(a,0,SEEK_END)); 116040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 116140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 116240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 116340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 116440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 116540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 116640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 116740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint directory_rename_test(void) 116840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 116940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 117040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 117140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 117240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/ram"); 117340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir("/ram/a",0); 117440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir("/ram/a/b",0); 117540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir("/ram/c",0); 117640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 117740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /ram\n"); 117840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram"); 117940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a"); 118040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a/b"); 118140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 118240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Do rename (should fail)\n"); 118340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 118440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_rename("/ram/a","/ram/a/b/d"); 118540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /ram\n"); 118640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram"); 118740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a"); 118840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a/b"); 118940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 119040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Do rename (should not fail)\n"); 119140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 119240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_rename("/ram/c","/ram/a/b/d"); 119340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\nDirectory look-up of /ram\n"); 119440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram"); 119540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a"); 119640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dumpDir("/ram/a/b"); 119740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 119840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 119940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 1; 120040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 120140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 120240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 120340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint cache_read_test(void) 120440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 120540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a,b,c; 120640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 120740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int sizeOfFiles = 500000; 120840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char buffer[100]; 120940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 121040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 121140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 121240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/boot"); 121340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 121440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_a_file("/boot/a",'a',sizeOfFiles); 121540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_a_file("/boot/b",'b',sizeOfFiles); 121640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 121740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open("/boot/a",O_RDONLY,0); 121840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project b = yaffs_open("/boot/b",O_RDONLY,0); 121940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project c = yaffs_open("/boot/c", O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE); 122040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 122140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project do{ 122240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = sizeOfFiles; 122340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if (i > 100) i = 100; 122440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sizeOfFiles -= i; 122540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(a,buffer,i); 122640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(b,buffer,i); 122740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(c,buffer,i); 122840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } while(sizeOfFiles > 0); 122940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 123040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 123140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 123240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 1; 123340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 123440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 123540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 123640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint cache_bypass_bug_test(void) 123740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 123840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // This test reporoduces a bug whereby YAFFS caching *was* buypassed 123940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // resulting in erroneous reads after writes. 124040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // This bug has been fixed. 124140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 124240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a; 124340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 124440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char buffer1[1000]; 124540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char buffer2[1000]; 124640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 124740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer1,0,sizeof(buffer1)); 124840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project memset(buffer2,0,sizeof(buffer2)); 124940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 125040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 125140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 125240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/boot"); 125340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 125440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Create a file of 2000 bytes. 125540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_a_file("/boot/a",'X',2000); 125640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 125740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open("/boot/a",O_RDWR, S_IREAD | S_IWRITE); 125840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 125940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Write a short sequence to the file. 126040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // This will go into the cache. 126140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_SET); 126240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(a,"abcdefghijklmnopqrstuvwxyz",20); 126340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 126440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Read a short sequence from the file. 126540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // This will come from the cache. 126640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_SET); 126740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(a,buffer1,30); 126840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 126940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // Read a page size sequence from the file. 127040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_SET); 127140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(a,buffer2,512); 127240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 127340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("buffer 1 %s\n",buffer1); 127440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("buffer 2 %s\n",buffer2); 127540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 127640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(strncmp(buffer1,buffer2,20)) 127740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 127840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Cache bypass bug detected!!!!!\n"); 127940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 128040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 128140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 128240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 1; 128340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 128440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 128540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 128640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint free_space_check(void) 128740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 128840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f; 128940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 129040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 129140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/boot"); 129240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_disk("/boot/",2); 129340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f = yaffs_freespace("/boot"); 129440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 129540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%d free when disk full\n",f); 129640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 1; 129740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 129840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 129940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint truncate_test(void) 130040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 130140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int a; 130240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int r; 130340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 130440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int l; 130540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 130640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char y[10]; 130740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 130840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 130940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount("/boot"); 131040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 131140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink("/boot/trunctest"); 131240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 131340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project a = yaffs_open("/boot/trunctest", O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 131440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 131540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(a,"abcdefghijklmnopqrstuvwzyz",26); 131640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 131740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_truncate(a,3); 131840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project l= yaffs_lseek(a,0,SEEK_END); 131940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 132040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("truncated length is %d\n",l); 132140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 132240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,5,SEEK_SET); 132340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(a,"1",1); 132440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 132540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(a,0,SEEK_SET); 132640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 132740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project r = yaffs_read(a,y,10); 132840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 132940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read %d bytes:",r); 133040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 133140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < r; i++) printf("[%02X]",y[i]); 133240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 133340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n"); 133440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 133540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 133640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 133740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 133840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 133940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 134040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 134140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 134240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 134340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid fill_disk_test(const char *mountpt) 134440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 134540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 134640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 134740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 134840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 5; i++) 134940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 135040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 135140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fill_disk_and_delete(mountpt,100,i+1); 135240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 135340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 135440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 135540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 135640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 135740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 135840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 135940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid lookup_test(const char *mountpt) 136040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 136140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 136240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 136340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[100]; 136440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[100]; 136540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 136640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 136740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_DIR *d; 136840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_dirent *de; 136940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project struct yaffs_stat s; 137040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char str[100]; 137140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 137240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 137340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 137440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 137540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 137640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project d = yaffs_opendir(mountpt); 137740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 137840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(!d) 137940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 138040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("opendir failed\n"); 138140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 138240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 138340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 138440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 138540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; (de = yaffs_readdir(d)) != NULL; i++) 138640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 138740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("unlinking %s\n",de->d_name); 138840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(de->d_name); 138940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 139040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 139140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%d files deleted\n",i); 139240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 139340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 139440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 139540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 2000; i++){ 139640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/%d",mountpt,i); 139740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, 0); 139840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 139940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 140040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 140140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rewinddir(d); 140240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; (de = yaffs_readdir(d)) != NULL; i++) 140340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 140440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%d %s\n",i,de->d_name); 140540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 140640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 140740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%d files listed\n\n\n",i); 140840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 140940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rewinddir(d); 141040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_readdir(d); 141140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_readdir(d); 141240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_readdir(d); 141340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 141440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 2000; i++){ 141540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/%d",mountpt,i); 141640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 141740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 141840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 141940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 142040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 142140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 142240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 142340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 142440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid link_test(const char *mountpt) 142540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 142640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 142740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 142840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[100]; 142940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[100]; 143040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char c[100]; 143140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 143240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f0; 143340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f1; 143440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f2; 143540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f3; 143640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/aaa",mountpt); 143740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/bbb",mountpt); 143840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(c,"%s/ccc",mountpt); 143940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 144040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 144140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 144240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 144340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 144440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 144540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 144640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 100; i++) 144740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,a,100); 144840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 144940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 145040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 145140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(b); 145240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(c); 145340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_link(a,b); 145440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_link(a,c); 145540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(b); 145640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(c); 145740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 145840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 145940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 146040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 146140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 146240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 146340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("link test done\n"); 146440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 146540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 146640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 146740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid freespace_test(const char *mountpt) 146840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 146940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 147040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 147140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[100]; 147240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[100]; 147340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 147440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f0; 147540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f1; 147640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f2; 147740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int f3; 147840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/aaa",mountpt); 147940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 148040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 148140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 148240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 148340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 148440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f0 = yaffs_freespace(mountpt); 148540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 148640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 148740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 148840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 100; i++) 148940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,a,100); 149040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 149140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 149240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 149340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f1 = yaffs_freespace(mountpt); 149440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 149540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 149640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 149740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f2 = yaffs_freespace(mountpt); 149840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 149940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 150040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 150140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 150240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 150340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project f3 = yaffs_freespace(mountpt); 150440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 150540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("%d\n%d\n%d\n%d\n",f0, f1,f2,f3); 150640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 150740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 150840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 150940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 151040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid simple_rw_test(const char *mountpt) 151140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 151240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 151340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 151440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[100]; 151540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 151640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int x; 151740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int result; 151840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 151940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/aaa",mountpt); 152040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 152140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 152240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 152340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 152440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 152540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 152640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 152740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(a,O_CREAT| O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 152840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 152940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 100000;i < 200000; i++){ 153040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = yaffs_write(h,&i,sizeof(i)); 153140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 153240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(result != 4) 153340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 153440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("write error\n"); 153540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project exit(1); 153640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 153740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 153840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 153940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //yaffs_close(h); 154040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 154140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // h = yaffs_open(a,O_RDWR, S_IREAD | S_IWRITE); 154240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 154340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 154440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_lseek(h,0,SEEK_SET); 154540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 154640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 100000; i < 200000; i++){ 154740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project result = yaffs_read(h,&x,sizeof(x)); 154840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 154940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(result != 4 || x != i){ 155040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("read error %d %x %x\n",i,result,x); 155140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 155240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 155340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 155440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Simple rw test passed\n"); 155540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 155640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 155740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 155840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 155940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 156040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 156140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid scan_deleted_files_test(const char *mountpt) 156240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 156340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char fn[100]; 156440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char sub[100]; 156540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 156640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project const char *p; 156740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 156840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 156940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 157040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int k; 157140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 157240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 157340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(sub,"%s/sdir",mountpt); 157440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 157540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 157640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 10; j++) 157740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 157840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n\n>>>>>>> Run %d <<<<<<<<<<<<<\n\n",j); 157940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 158040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(sub,0); 158140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 158240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 158340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project p = (j & 0) ? mountpt: sub; 158440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 158540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 100; i++) 158640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 158740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%d",p,i); 158840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 158940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(i & 1) 159040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 159140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(fn,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 159240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(k = 0; k < 1000; k++) 159340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,fn,100); 159440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 159540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 159640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 159740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(fn,0); 159840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 159940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 160040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 10; i++) 160140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 160240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(fn,"%s/%d",p,i); 160340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(i & 1) 160440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(fn); 160540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project else 160640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_rmdir(fn); 160740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 160840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 160940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 161140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 161240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 161740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 161940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid write_10k(int h) 162040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 162140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 162240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project const char *s="0123456789"; 162340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 1000; i++) 162440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_write(h,s,10); 162540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 162640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 162740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid write_200k_file(const char *fn, const char *fdel, const char *fdel1) 162840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 162940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h1; 163040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 163140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int offs; 163240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 163340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h1 = yaffs_open(fn, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 163440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 163540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 100000; i+= 10000) 163640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 163740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project write_10k(h1); 163840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 163940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 164040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project offs = yaffs_lseek(h1,0,SEEK_CUR); 164140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if( offs != 100000) 164240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 164340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Could not write file\n"); 164440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 164540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 164640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(fdel); 164740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 100000; i+= 10000) 164840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 164940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project write_10k(h1); 165040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 165140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 165240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project offs = yaffs_lseek(h1,0,SEEK_CUR); 165340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if( offs != 200000) 165440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 165540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Could not write file\n"); 165640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 165740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 165840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h1); 165940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(fdel1); 166040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 166140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 166240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 166340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 166440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid verify_200k_file(const char *fn) 166540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 166640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h1; 166740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 166840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char x[11]; 166940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project const char *s="0123456789"; 167040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int errCount = 0; 167140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 167240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h1 = yaffs_open(fn, O_RDONLY, 0); 167340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 167440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 200000 && errCount < 10; i+= 10) 167540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 167640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_read(h1,x,10); 167740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(strncmp(x,s,10) != 0) 167840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 167940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("File %s verification failed at %d\n",fn,i); 168040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project errCount++; 168140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 168240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 168340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(errCount >= 10) 168440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Too many errors... aborted\n"); 168540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 168640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h1); 168740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 168840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 168940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 169040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 169140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid check_resize_gc_bug(const char *mountpt) 169240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 169340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 169440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[30]; 169540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[30]; 169640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char c[30]; 169740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 169840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 169940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 170040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/a",mountpt); 170140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/b",mountpt); 170240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(c,"%s/c",mountpt); 170340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 170440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 170540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 170640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 170740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 170840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 170940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 171040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(b); 171140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 171240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < 50; i++) 171340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project { 171440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("A\n");write_200k_file(a,"",c); 171540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("B\n");verify_200k_file(a); 171640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("C\n");write_200k_file(b,a,c); 171740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("D\n");verify_200k_file(b); 171840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 171940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 172040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("E\n");verify_200k_file(a); 172140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("F\n");verify_200k_file(b); 172240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 172340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 172440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 172540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 172640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 172740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid multi_mount_test(const char *mountpt,int nmounts) 172840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 172940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 173040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[30]; 173140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[30]; 173240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char c[30]; 173340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 173440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 173540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 173640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 173740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/a",mountpt); 173840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 173940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 174040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 174140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 174240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 174340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 174440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < nmounts; i++){ 174540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("############### Iteration %d Start\n",i); 174640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 174740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 174840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(a,0); 174940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < i; j++){ 175040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/%d",a,j); 175140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project verify_200k_file(b); 175240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 175340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/%d",a,i); 175440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 175540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project write_200k_file(b,"",""); 175640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 175740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("######## Iteration %d End\n",i); 175840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 175940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 176040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 176140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 176240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 176340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 176440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 176540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid yaffs_touch(const char *fn) 176640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 176740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_chmod(fn, S_IREAD | S_IWRITE); 176840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 176940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 177040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid checkpoint_fill_test(const char *mountpt,int nmounts) 177140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 177240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 177340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[50]; 177440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[50]; 177540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char c[50]; 177640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 177740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 177840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 177940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 178040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/a",mountpt); 178240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 178740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 178840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < nmounts; i++){ 178940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("############### Iteration %d Start\n",i); 179040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 179140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 179240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(a,0); 179340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 179440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/zz",a); 179540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 179640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h = yaffs_open(b,O_CREAT | O_RDWR,S_IREAD |S_IWRITE); 179740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 179840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 179940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(yaffs_write(h,c,50) == 50){} 180040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 180140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h); 180240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 180340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 2; j++){ 180440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("touch %d\n",j); 180540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_touch(b); 180640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 180740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 180840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 180940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 181040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 181140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 181240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 181340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 181440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 181540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 181640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint make_file2(const char *name1, const char *name2,int syz) 181740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 181840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 181940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char xx[2500]; 182040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 182140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h1=-1,h2=-1; 182240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int n = 1; 182340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 182440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 182540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(name1) 182640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h1 = yaffs_open(name1,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 182740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project if(name2) 182840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project h2 = yaffs_open(name2,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE); 182940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 183040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(syz > 0 && n > 0){ 183140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project i = (syz > 2500) ? 2500 : syz; 183240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project n = yaffs_write(h1,xx,i); 183340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project n = yaffs_write(h2,xx,i); 183440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project syz -= 500; 183540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 183640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h1); 183740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_close(h2); 183840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 183940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 184040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 184140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 184240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectextern void SetCheckpointReservedBlocks(int n); 184340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 184440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid checkpoint_upgrade_test(const char *mountpt,int nmounts) 184540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 184640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 184740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[50]; 184840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char b[50]; 184940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char c[50]; 185040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char d[50]; 185140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 185240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 185340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 185440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 185540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 185640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/a",mountpt); 185740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 185840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 185940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 186040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 186140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Create start condition\n"); 186240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 186340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project SetCheckpointReservedBlocks(0); 186440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 186540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mkdir(a,0); 186640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(b,"%s/zz",a); 186740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(c,"%s/xx",a); 186840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_file2(b,c,2000000); 186940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(d,"%s/aa",a); 187040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project make_file2(d,NULL,500000000); 187140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 187240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 187340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Umount/mount attempt full\n"); 187440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 187540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 187640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project SetCheckpointReservedBlocks(10); 187740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 187840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 187940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("unlink small file\n"); 188040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(c); 188140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 188240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 188340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("Umount/mount attempt\n"); 188440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 188540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 188640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 188740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 500; j++){ 188840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("***** touch %d\n",j); 188940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 189040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_touch(b); 189140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 189240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 189340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 189440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 189540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(j = 0; j < 500; j++){ 189640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("***** touch %d\n",j); 189740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project dump_directory_tree(mountpt); 189840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_touch(b); 189940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unmount(mountpt); 190040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 190140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 190240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 190340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 190440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid huge_array_test(const char *mountpt,int n) 190540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 190640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 190740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project char a[50]; 190840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 190940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 191040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int i; 191140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int j; 191240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int h; 191340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 191440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project int fnum; 191540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 191640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"mount point %s",mountpt); 191740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 191840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 191940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 192040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_StartUp(); 192140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 192240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_mount(mountpt); 192340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 192440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(n>0){ 192540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project n--; 192640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fnum = 0; 192740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n\n START run\n\n"); 192840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project while(yaffs_freespace(mountpt) > 25000000){ 192940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/file%d",mountpt,fnum); 193040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project fnum++; 193140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("create file %s\n",a); 193240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project create_file_of_size(a,10000000); 193340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("verifying file %s\n",a); 193440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project verify_file_of_size(a,10000000); 193540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 193640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 193740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n\n\ verification/deletion\n\n"); 193840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 193940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project for(i = 0; i < fnum; i++){ 194040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project sprintf(a,"%s/file%d",mountpt,i); 194140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("verifying file %s\n",a); 194240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project verify_file_of_size(a,10000000); 194340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("deleting file %s\n",a); 194440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project yaffs_unlink(a); 194540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 194640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project printf("\n\n\ done \n\n"); 194740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 194840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 194940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project } 195040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 195140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 195240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 195340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 195440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint main(int argc, char *argv[]) 195540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project{ 195640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //return long_test(argc,argv); 195740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 195840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //return cache_read_test(); 195940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 196040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //resize_stress_test_no_grow("/flash",20); 196140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 196240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //huge_directory_test_on_path("/ram2k"); 196340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 196440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //yaffs_backward_scan_test("/flash/flash"); 196540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // yaffs_device_flush_test("/flash/flash"); 196640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 196740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 196840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //scan_pattern_test("/flash",10000,10); 196940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //short_scan_test("/flash/flash",40000,200); 197040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //multi_mount_test("/flash/flash",20); 197140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //checkpoint_fill_test("/flash/flash",20); 197240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //checkpoint_upgrade_test("/flash/flash",20); 197340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project huge_array_test("/flash/flash",10); 197440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 197540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 197640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 197740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 197840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //long_test_on_path("/ram2k"); 197940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // long_test_on_path("/flash"); 198040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //simple_rw_test("/flash/flash"); 198140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //fill_disk_test("/flash/flash"); 198240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // rename_over_test("/flash"); 198340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //lookup_test("/flash"); 198440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //freespace_test("/flash/flash"); 198540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 198640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //link_test("/flash/flash"); 198740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 198840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 198940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project // cache_bypass_bug_test(); 199240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //free_space_check(); 199440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project //check_resize_gc_bug("/flash"); 199640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project return 0; 199840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project 199940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project} 2000