xc_sector_t xixcore_call xixcore_GetAddrOfFileHeaderSec( xc_uint32 LotSize, xc_uint32 SectorsizeBit, xc_uint64 LotIndex ) { xc_uint64 logicalAddress = 0; xc_sector_t logicalSecNum = 0; DebugTrace(DEBUG_LEVEL_TRACE, DEBUG_TARGET_ADDRTRANS, ("Enter xixcore_GetAddrOfFileHeader\n")); logicalAddress = XIFS_OFFSET_VOLUME_LOT_LOC + (LotIndex * LotSize ) + XIDISK_DATA_LOT_SIZE; XIXCORE_ASSERT(IS_4096_SECTOR(logicalAddress)); logicalSecNum = (xc_sector_t)SECTOR_ALIGNED_COUNT(SectorsizeBit,logicalAddress); #ifdef __XIXCORE_BLOCK_LONG_ADDRESS__ DebugTrace((DEBUG_LEVEL_TRACE|DEBUG_LEVEL_INFO), DEBUG_TARGET_ADDRTRANS, ("Exit xixcore_GetAddrOfFileHeader logical address(%lld) logical Sec num (%lld)\n", logicalAddress, logicalSecNum)); #else DebugTrace((DEBUG_LEVEL_TRACE|DEBUG_LEVEL_INFO), DEBUG_TARGET_ADDRTRANS, ("Exit xixcore_GetAddrOfFileHeader logical address(%lld) logical Sec num (%ld)\n", logicalAddress, logicalSecNum)); #endif return logicalSecNum; }
xc_uint64 xixcore_call xixcore_GetAddrOfFileData( xc_uint32 Flag, xc_uint32 LotSize, xc_uint64 LotIndex ) { xc_uint64 logicalAddress = 0; DebugTrace(DEBUG_LEVEL_TRACE, DEBUG_TARGET_ADDRTRANS, ("Enter xixcore_GetAddrOfFileData\n")); if(Flag == LOT_FLAG_BEGIN){ logicalAddress = XIFS_OFFSET_VOLUME_LOT_LOC + (LotIndex * LotSize ) + XIDISK_FILE_HEADER_SIZE; }else{ logicalAddress = XIFS_OFFSET_VOLUME_LOT_LOC + (LotIndex * LotSize ) + XIDISK_DATA_LOT_SIZE; } XIXCORE_ASSERT(IS_4096_SECTOR(logicalAddress)); DebugTrace((DEBUG_LEVEL_TRACE|DEBUG_LEVEL_INFO), DEBUG_TARGET_ADDRTRANS, ("Exit xixcore_GetAddrOfFileData logical address(%lld) \n", logicalAddress)); return logicalAddress ; }
uint64 xixfs_GetLcnFromLot( IN uint32 LotSize, IN uint64 LotIndex ) { uint64 PhyAddress = 0; PhyAddress = XIFS_OFFSET_VOLUME_LOT_LOC + (LotIndex * LotSize ); ASSERT(IS_4096_SECTOR(PhyAddress)); return (uint64)(PhyAddress/CLUSTER_SIZE); }