📄 pseudoftl.c
字号:
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_Format() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Format()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* 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;
}
#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;
}
/*****************************************************************************/
/* */
/* 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 */
&nResult); /* Error Return */
if ((BOOL32)nResult != TRUE32)
{
FTLP_ERR_PRINT((TEXT("[FTLP:ERR] FTL_GarbageCollect() failure.x\r\n")));
break;
}
} while(0);
FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_GarbageCollect()\r\n")));
return (BOOL32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* FTL_Close */
/* DESCRIPTION */
/* This function releases FTL layer. */
/* PARAMETERS */
/* none */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -