?? pseudoftl.c
字號:
/* FTL_Read */
/* DESCRIPTION */
/* This function reads virtual page. */
/* PARAMETERS */
/* nVpn [IN] virtual page number */
/* pBuf [IN] Buffer pointer */
/* bCleanCheck [IN] clean check or not */
/* RETURN VALUES */
/* FTL_SUCCESS */
/* FTL_Read is completed */
/* FTL_CRITICAL_ERROR */
/* FTL_Read is failed */
/* FTL_USERDATA_ERROR */
/* there is an uncorrectable read error on user data */
/* FTL_OUT_OF_RANGE */
/* input parameters are invalid */
/* NOTES */
/* */
/*****************************************************************************/
INT32
FTL_Read(UINT32 nLsn, UINT32 nNumOfScts, UINT8 *pBuf)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()\r\n")));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() nLsn = %d\r\n"), nLsn));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() nNumOfScts = %d\r\n"), nNumOfScts));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() pBuf = 0x%x\r\n"), pBuf));
do {
/* FTL_Read */
stPacket.nCtrlCode = PM_HAL_FTL_READ;
stPacket.nLsn = nLsn;
stPacket.nNumOfScts = nNumOfScts;
stPacket.pBuf = pBuf;
stPacket.pTotalScts = NULL;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != FTL_SUCCESS)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_Read() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Read()\r\n")));
return (INT32)nResult;
}
INT32
FTL_Scan(UINT32 mode)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()\r\n")));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() nLsn = %d\r\n"), nLsn));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() nNumOfScts = %d\r\n"), nNumOfScts));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read() pBuf = 0x%x\r\n"), pBuf));
do {
/* FTL_Read */
stPacket.nCtrlCode = PM_HAL_FTL_SCAN;
stPacket.nLsn = mode;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != FTL_SUCCESS)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_Read() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Read()\r\n")));
return (INT32)nResult;
}
#if (WMR_READ_RECLAIM)
/*****************************************************************************/
/* */
/* NAME */
/* FTL_ReadReclaim */
/* DESCRIPTION */
/* This function checks read reclaim map & reclaims read error blks. */
/* PARAMETERS */
/* none */
/* RETURN VALUES */
/* FTL_SUCCESS */
/* FTL_ReadReclaim is completed */
/* FTL_CRITICAL_ERROR */
/* FTL_ReadReclaim is failed */
/* NOTES */
/* */
/*****************************************************************************/
INT32
FTL_ReadReclaim(VOID)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_ReadReclaim()\r\n")));
do {
/* FTL_ReadReclaim */
stPacket.nCtrlCode = PM_HAL_FTL_READRECLAIM;
stPacket.nLsn = 0;
stPacket.nNumOfScts = 0;
stPacket.pBuf = NULL;
stPacket.pTotalScts = NULL;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != FTL_SUCCESS)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_ReadReclaim() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_ReadReclaim()\r\n")));
return (INT32)nResult;
}
#endif
/*****************************************************************************/
/* */
/* NAME */
/* FTL_Write */
/* DESCRIPTION */
/* This function writes virtual page. */
/* PARAMETERS */
/* nVpn [IN] virtual page number */
/* pBuf [IN] Buffer pointer */
/* RETURN VALUES */
/* FTL_SUCCESS */
/* FTL_Write is completed */
/* FTL_CRITICAL_ERROR */
/* FTL_Write is failed */
/* FTL_OUT_OF_RANGE */
/* input parameters are invalid */
/* NOTES */
/* */
/*****************************************************************************/
INT32
FTL_Write(UINT32 nLsn, UINT32 nNumOfScts, UINT8 *pBuf)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Write()\r\n")));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte() nVpn = %d\r\n"), nLsn));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte() nNumOfScts = %d\r\n"), nNumOfScts));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte() pBuf = 0x%x\r\n"), pBuf));
do {
/* FTL_Write */
stPacket.nCtrlCode = PM_HAL_FTL_WRITE;
stPacket.nLsn = nLsn;
stPacket.nNumOfScts = nNumOfScts;
stPacket.pBuf = pBuf;
stPacket.pTotalScts = NULL;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != FTL_SUCCESS)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_Write() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Write()\r\n")));
return (INT32)nResult;
}
INT32
FTL_Delete(UINT32 nLsn, UINT32 nNumOfScts)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Delete()\r\n")));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Delete() nVpn = %d\r\n"), nLsn));
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Delete() nNumOfScts = %d\r\n"), nNumOfScts));
do {
/* FTL_Write */
stPacket.nCtrlCode = PM_HAL_FTL_DELETE;
stPacket.nLsn = nLsn;
stPacket.nNumOfScts = nNumOfScts;
stPacket.pTotalScts = NULL;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != FTL_SUCCESS)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_Delete() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Delete()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* FTL_GarbageCollect */
/* DESCRIPTION */
/* This function call _Merge(NULL) function. */
/* PARAMETERS */
/* none */
/* RETURN VALUES */
/* TRUE32 */
/* FTL_GarbageCollect is success. */
/* FALSE32 */
/* FTL_GarbageCollect is failed. */
/* NOTES */
/* */
/*****************************************************************************/
BOOL32
FTL_GarbageCollect(VOID)
{
FTLPacket stPacket;
UINT32 nResult;
FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_GarbageCollect()\r\n")));
do {
/* FTL_ReadReclaim */
stPacket.nCtrlCode = PM_HAL_FTL_GARBAGECOLLECT;
stPacket.nLsn = 0;
stPacket.nNumOfScts = 0;
stPacket.pBuf = NULL;
stPacket.pTotalScts = NULL;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(FTLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -