Widen page count field in blockinfo to allow lots of pages per block
[yaffs/.git] / yaffs_ramem.c
index 2aebfe981de65c8dadcb7b0a9f798b8e8b4e5eae..1a82ae5de13fee3190d32964411f139b0135cabf 100644 (file)
@@ -15,6 +15,8 @@
  //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 CONFIG_YAFFS_RAM_ENABLED
 #endif
@@ -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
        {