// This provides a YAFFS nand emulation on a file for emulating 2kB pages.
// THis is only intended as test code to test persistence etc.
-const char *yaffs_flashif_c_version = "$Id: yaffs_fileem2k.c,v 1.2 2004-11-22 03:22:25 charles Exp $";
+const char *yaffs_flashif_c_version = "$Id: yaffs_fileem2k.c,v 1.4 2005-07-18 23:12:00 charles Exp $";
#include "yportenv.h"
static yflash_Device filedisk;
-static int CheckInit(yaffs_Device *dev)
+static int CheckInit(void)
{
static int initialised = 0;
}
}
}
+ else
+ {
+ filedisk.nBlocks = fSize/(BLOCK_SIZE);
+ }
return 1;
}
+
+int yflash_GetNumberOfBlocks(void)
+{
+ CheckInit();
+
+ return filedisk.nBlocks;
+}
+
int yflash_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, yaffs_ExtendedTags *tags)
{
int written;
int pos;
- CheckInit(dev);
+ CheckInit();
{
pos = chunkInNAND * PAGE_SIZE + PAGE_DATA_SIZE;
lseek(filedisk.handle,pos,SEEK_SET);
- if(dev->isYaffs2)
+ if( 0 && dev->isYaffs2)
{
written = write(filedisk.handle,tags,sizeof(yaffs_ExtendedTags));
yaffs_PackedTags2 pt;
- CheckInit(dev);
+ CheckInit();
memset(&pt,0,sizeof(pt));
lseek(filedisk.handle,(blockNo * dev->nChunksPerBlock) * PAGE_SIZE + PAGE_DATA_SIZE,SEEK_SET);
int nread;
int pos;
- CheckInit(dev);
+ CheckInit();
{
pos = chunkInNAND * PAGE_SIZE + PAGE_DATA_SIZE;
lseek(filedisk.handle,pos,SEEK_SET);
- if(dev->isYaffs2)
+ if(0 && dev->isYaffs2)
{
nread= read(filedisk.handle,tags,sizeof(yaffs_ExtendedTags));
if(nread != sizeof(yaffs_ExtendedTags)) return YAFFS_FAIL;
int i;
- CheckInit(dev);
+ CheckInit();
if(blockNumber < 0 || blockNumber >= filedisk.nBlocks)
{
int yflash_InitialiseNAND(yaffs_Device *dev)
{
- CheckInit(dev);
+ CheckInit();
return YAFFS_OK;
}