X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftest-framework%2Fyaffs_ramem2k.c;h=73195c9a3f2ba2372b0ac2d55690008275a6aaed;hp=715ae77c97fd95b90088ddd73850fd9187430e92;hb=HEAD;hpb=c08faae4258b29a794ad55ca160c5a247145c838 diff --git a/direct/test-framework/yaffs_ramem2k.c b/direct/test-framework/yaffs_ramem2k.c index 715ae77..73195c9 100644 --- a/direct/test-framework/yaffs_ramem2k.c +++ b/direct/test-framework/yaffs_ramem2k.c @@ -1,8 +1,7 @@ /* * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. * - * Copyright (C) 2002-2011 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering + * Copyright (C) 2002-2018 Aleph One Ltd. * * Created by Charles Manning * @@ -49,7 +48,7 @@ #define BLOCKS_PER_MEG ((1<<20)/(PAGES_PER_BLOCK * PAGE_DATA_SIZE)) -typedef struct +typedef struct { u8 data[PAGE_TOTAL_SIZE]; // Data + spare int empty; // is this empty? @@ -59,7 +58,7 @@ typedef struct typedef struct { nandemul_Page *page[PAGES_PER_BLOCK]; - int damaged; + int damaged; } nandemul_Block; @@ -77,6 +76,7 @@ static int sizeInMB = EM_SIZE_IN_MEG; static void nandemul_yield(int n) { + (void)n; #ifdef __KERNEL__ if(n > 0) schedule_timeout(n); #endif @@ -87,16 +87,16 @@ static void nandemul_yield(int n) static void nandemul_ReallyEraseBlock(int blockNumber) { int i; - + nandemul_Block *blk; - + if(blockNumber < 0 || blockNumber >= ned.nBlocks) { return; } - + blk = ned.block[blockNumber]; - + for(i = 0; i < PAGES_PER_BLOCK; i++) { memset(blk->page[i],0xff,sizeof(nandemul_Page)); @@ -116,40 +116,40 @@ static int nandemul2k_CalcNBlocks(void) static int CheckInit(void) { static int initialised = 0; - + int i,j; - + int fail = 0; - int nBlocks; + int nBlocks; int nAllocated = 0; - - if(initialised) + + if(initialised) { return YAFFS_OK; } - - + + ned.nBlocks = nBlocks = nandemul2k_CalcNBlocks(); - + ned.block = malloc(sizeof(nandemul_Block*) * nBlocks ); - + if(!ned.block) return YAFFS_FAIL; - - - - + + + + for(i=fail=0; i page[pg]->data; - + for(i = 0; i < PAGE_DATA_SIZE; i++) { x[i] &=data[i]; @@ -212,16 +214,16 @@ int nandemul2k_WriteChunkWithTagsToNAND(struct yaffs_dev *dev,int nand_chunk,con ned.block[blk]->page[pg]->empty = 0; } - - + + if(tags) { x = &ned.block[blk]->page[pg]->data[PAGE_DATA_SIZE]; - - yaffs_pack_tags2((struct yaffs_packed_tags2 *)x,tags, !dev->param.no_tags_ecc); - + + yaffs_pack_tags2(dev, (struct yaffs_packed_tags2 *)x,tags, !dev->param.no_tags_ecc); + } - + if(tags || data) { nandemul_yield(1); @@ -235,60 +237,35 @@ int nandemul2k_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u { int blk; int pg; - + u8 *x; - - + + blk = nand_chunk/PAGES_PER_BLOCK; pg = nand_chunk%PAGES_PER_BLOCK; - - + + if(data) { memcpy(data,ned.block[blk]->page[pg]->data,PAGE_DATA_SIZE); } - - + + if(tags) { x = &ned.block[blk]->page[pg]->data[PAGE_DATA_SIZE]; - - yaffs_unpack_tags2(tags,(struct yaffs_packed_tags2 *)x, !dev->param.no_tags_ecc); - } - - return YAFFS_OK; -} - -static int nandemul2k_CheckChunkErased(struct yaffs_dev *dev,int nand_chunk) -{ - int blk; - int pg; - int i; - - - - blk = nand_chunk/PAGES_PER_BLOCK; - pg = nand_chunk%PAGES_PER_BLOCK; - - - for(i = 0; i < PAGE_TOTAL_SIZE; i++) - { - if(ned.block[blk]->page[pg]->data[i] != 0xFF) - { - return YAFFS_FAIL; - } + yaffs_unpack_tags2(dev, tags,(struct yaffs_packed_tags2 *)x, !dev->param.no_tags_ecc); } return YAFFS_OK; - } int nandemul2k_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber) { - - + (void) dev; + if(blockNumber < 0 || blockNumber >= ned.nBlocks) { yaffs_trace(YAFFS_TRACE_ALWAYS, @@ -305,28 +282,32 @@ int nandemul2k_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber) { nandemul_ReallyEraseBlock(blockNumber); } - + return YAFFS_OK; } int nandemul2k_InitialiseNAND(struct yaffs_dev *dev) { + (void) dev; + CheckInit(); return YAFFS_OK; } - + int nandemul2k_MarkNANDBlockBad(struct yaffs_dev *dev, int block_no) { - + u8 *x; - + + (void) dev; + x = &ned.block[block_no]->page[0]->data[PAGE_DATA_SIZE]; - + memset(x,0,sizeof(struct yaffs_packed_tags2)); - - + + return YAFFS_OK; - + } int nandemul2k_QueryNANDBlock(struct yaffs_dev *dev, int block_no, enum yaffs_block_state *state, u32 *seq_number) @@ -335,9 +316,9 @@ int nandemul2k_QueryNANDBlock(struct yaffs_dev *dev, int block_no, enum yaffs_bl int chunkNo; *seq_number = 0; - + chunkNo = block_no * dev->param.chunks_per_block; - + nandemul2k_ReadChunkWithTagsFromNAND(dev,chunkNo,NULL,&tags); if(tags.block_bad) {