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)); blk->page[i]->empty = 1; } nandemul_yield(2); }
int nandemul2k_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, const yaffs_ExtendedTags *tags) { int blk; int pg; int i; __u8 *x; blk = chunkInNAND/PAGES_PER_BLOCK; pg = chunkInNAND%PAGES_PER_BLOCK; if(data) { x = ned.block[blk]->page[pg]->data; for(i = 0; i < PAGE_DATA_SIZE; i++) { x[i] &=data[i]; } ned.block[blk]->page[pg]->empty = 0; } if(tags) { x = &ned.block[blk]->page[pg]->data[PAGE_DATA_SIZE]; yaffs_PackTags2((yaffs_PackedTags2 *)x,tags); } if(tags || data) { nandemul_yield(1); } return YAFFS_OK; }
int nandemul2k_WriteChunkWithTagsToNAND(struct yaffs_dev *dev,int nand_chunk,const u8 *data, const struct yaffs_ext_tags *tags) { int blk; int pg; int i; u8 *x; blk = nand_chunk/PAGES_PER_BLOCK; pg = nand_chunk%PAGES_PER_BLOCK; if(data) { x = ned.block[blk]->page[pg]->data; for(i = 0; i < PAGE_DATA_SIZE; i++) { x[i] &=data[i]; } 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); } if(tags || data) { nandemul_yield(1); } return YAFFS_OK; }