X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs%2F.git;a=blobdiff_plain;f=yaffs_ramem.c;h=1a82ae5de13fee3190d32964411f139b0135cabf;hp=2c8d0bce05bb43249f622c329d7d4aecc11ae8ac;hb=9f5e5dc8f9b59a6949c8500f32efa9389d67fd38;hpb=54a94b218fce5de9c076266fc34c9de5bfcd656b diff --git a/yaffs_ramem.c b/yaffs_ramem.c index 2c8d0bc..1a82ae5 100644 --- a/yaffs_ramem.c +++ b/yaffs_ramem.c @@ -15,11 +15,13 @@ //yaffs_ramem.c // Since this creates the RAM block at start up it is pretty useless for testing the scanner. +const char *yaffs_ramem_c_version = "$Id: yaffs_ramem.c,v 1.6 2002-11-26 01:15:37 charles Exp $"; + #ifndef __KERNEL__ -#define YAFFS_RAM_ENABLED +#define CONFIG_YAFFS_RAM_ENABLED #endif -#ifdef YAFFS_RAM_ENABLED +#ifdef CONFIG_YAFFS_RAM_ENABLED #include "yportenv.h" @@ -36,7 +38,7 @@ #define FILE_SIZE_IN_BLOCKS (FILE_SIZE_IN_MEG * BLOCKS_PER_MEG) #define FILE_SIZE_IN_BYTES (FILE_SIZE_IN_BLOCKS * BLOCK_SIZE) -#define T(x) YPRINTF(x) + #define DEFAULT_SIZE_IN_MB 2 @@ -68,6 +70,15 @@ static nandemul_Device ned; int sizeInMB = DEFAULT_SIZE_IN_MB; +static void nandemul_yield(int n) +{ +#ifdef __KERNEL__ + if(n > 0) schedule_timeout(n); +#endif + +} + + static void nandemul_ReallyEraseBlock(int blockNumber) { int i; @@ -81,6 +92,7 @@ static void nandemul_ReallyEraseBlock(int blockNumber) theBlock->page[i].count[1] = 0; theBlock->page[i].count[2] = 0; theBlock->page[i].empty = 1; + nandemul_yield(2); } } @@ -154,7 +166,7 @@ static int CheckInit(void) } YFREE(ned.block); - T(("Allocation failed, could only allocate %dMB of %dMB requested.\n", + T(YAFFS_TRACE_ALWAYS,("Allocation failed, could only allocate %dMB of %dMB requested.\n", nAllocated/64,sizeInMB)); return 0; } @@ -208,6 +220,11 @@ int nandemul_WriteChunkToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data } ned.block[blk]->page[pg].count[2]++; } + + if(spare || data) + { + nandemul_yield(1); + } return YAFFS_OK; } @@ -272,11 +289,11 @@ int nandemul_EraseBlockInNAND(yaffs_Device *dev, int blockNumber) if(blockNumber < 0 || blockNumber >= ned.nBlocks) { - T(("Attempt to erase non-existant block %d\n",blockNumber)); + T(YAFFS_TRACE_ALWAYS,("Attempt to erase non-existant block %d\n",blockNumber)); } else if(ned.block[blockNumber]->damaged) { - T(("Attempt to erase damaged block %d\n",blockNumber)); + T(YAFFS_TRACE_ALWAYS,("Attempt to erase damaged block %d\n",blockNumber)); } else {