int UPDATE_NEW_PAGE_MAPPING(int32_t lpn, int32_t ppn) { /* Update Page Mapping Table */ #ifdef FTL_MAP_CACHE CACHE_UPDATE_PPN(lpn, ppn); #else mapping_table[lpn] = ppn; #endif /* Update Inverse Page Mapping Table */ UPDATE_BLOCK_STATE_ENTRY(CALC_FLASH(ppn), CALC_BLOCK(ppn), CALC_PAGE(ppn), VALID); UPDATE_BLOCK_STATE(CALC_FLASH(ppn), CALC_BLOCK(ppn), DATA_BLOCK); UPDATE_INVERSE_MAPPING(ppn, lpn); return SUCCESS; }
int UPDATE_NEW_PAGE_MAPPING(IDEState *s, int32_t lpn, int32_t ppn) { SSDState *ssd = &(s->ssd); /* Update Page Mapping Table */ #ifdef FTL_MAP_CACHE CACHE_UPDATE_PPN(s, lpn, ppn); #else ssd->mapping_table[lpn] = ppn; #endif /* Update Inverse Page Mapping Table */ UPDATE_BLOCK_STATE_ENTRY(s, CALC_FLASH(s, ppn), CALC_BLOCK(s, ppn), CALC_PAGE(s, ppn), VALID); UPDATE_BLOCK_STATE(s, CALC_FLASH(s, ppn), CALC_BLOCK(s, ppn), DATA_BLOCK); UPDATE_INVERSE_MAPPING(s, ppn, lpn); return SUCCESS; }