Пример #1
0
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;
}
Пример #2
0
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 ;
}
Пример #3
0
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);
}