📄 pseudovfl.c
字号:
/* VFL_Format */
stPacket.nCtrlCode = PM_HAL_VFL_FORMAT;
stPacket.nVbn = 0; // Not used
stPacket.nVpn = 0; // Not used
stPacket.pBuf = NULL;
stPacket.nSrcVpn = 0; // Not used
stPacket.nDesVpn = 0; // Not used
stPacket.bCleanCheck= 0;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* Io Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(VFLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != VFL_SUCCESS)
{
VFLP_ERR_PRINT((TEXT("[VFLP:ERR] VFL_Format() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Format()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* VFL_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 */
/* VFL_SUCCESS */
/* VFL_Read is completed. */
/* VFL_CRITICAL_ERROR */
/* critical error */
/* VFL_U_ECC_ERROR */
/* ECC uncorrectable error occurs from FIL read function. */
/* NOTES */
/* */
/*****************************************************************************/
INT32
VFL_Read(UINT32 nVpn, Buffer *pBuf, BOOL32 bCleanCheck)
{
VFLPacket stPacket;
UINT32 nResult;
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read()\r\n")));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read() nVpn = %d\r\n"), nVpn));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read() pBuf = 0x%x\r\n"), pBuf));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read() bCleanCheck = %d\r\n"), bCleanCheck));
do {
/* VFL_Read */
stPacket.nCtrlCode = PM_HAL_VFL_READ;
stPacket.nVbn = 0; // Not used
stPacket.nVpn = nVpn;
stPacket.pBuf = pBuf;
stPacket.nSrcVpn = 0;
stPacket.nDesVpn = 0;
stPacket.bCleanCheck= bCleanCheck;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(VFLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != VFL_SUCCESS)
{
VFLP_ERR_PRINT((TEXT("[VFLP:ERR] VFL_Read() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Read()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* VFL_Write */
/* DESCRIPTION */
/* This function writes virtual page. */
/* PARAMETERS */
/* nVpn [IN] virtual page number */
/* pBuf [IN] Buffer pointer */
/* RETURN VALUES */
/* VFL_SUCCESS */
/* VFL_Write is completed. */
/* VFL_CRITICAL_ERROR */
/* VFL_Write is failed. */
/* NOTES */
/* */
/*****************************************************************************/
INT32
VFL_Write(UINT32 nVpn, Buffer *pBuf)
{
VFLPacket stPacket;
UINT32 nResult;
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Write()\r\n")));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Wrhte() nVpn = %d\r\n"), nVpn));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Wrhte() pBuf = 0x%x\r\n"), pBuf));
do {
/* VFL_Write */
stPacket.nCtrlCode = PM_HAL_VFL_WRITE;
stPacket.nVbn = 0; // Not used
stPacket.nVpn = nVpn;
stPacket.pBuf = pBuf;
stPacket.nSrcVpn = 0;
stPacket.nDesVpn = 0;
stPacket.bCleanCheck= 0;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(VFLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != VFL_SUCCESS)
{
VFLP_ERR_PRINT((TEXT("[VFLP:ERR] VFL_Write() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Write()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* VFL_Erase */
/* DESCRIPTION */
/* This function erases virtual block(super block). */
/* PARAMETERS */
/* nVbn [IN] virtual block number */
/* RETURN VALUES */
/* VFL_SUCCESS */
/* VFL_Erase is completed. */
/* VFL_CRITICAL_ERROR */
/* VFL_Erase is failed. */
/* NOTES */
/* */
/*****************************************************************************/
INT32
VFL_Erase(UINT32 nVbn)
{
VFLPacket stPacket;
UINT32 nResult;
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Erase()\r\n")));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Erase() nVbn = %d(0x%x)\r\n"), nVbn, nVbn));
do {
/* VFL_Erase */
stPacket.nCtrlCode = PM_HAL_VFL_ERASE;
stPacket.nVbn = nVbn;
stPacket.nVpn = 0; // Not used
stPacket.pBuf = NULL;
stPacket.nSrcVpn = 0; // Not used
stPacket.nDesVpn = 0; // Not used
stPacket.bCleanCheck= 0;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(VFLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if (nResult != VFL_SUCCESS)
{
VFLP_ERR_PRINT((TEXT("[VFLP:ERR] VFL_Erase() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Erase()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* VFL_Copyback */
/* DESCRIPTION */
/* This function copies page data from source to destination. */
/* PARAMETERS */
/* nSrcVpn [IN] virtual block number (source) */
/* nDesVpn [IN] virtual block number (destination) */
/* pBuf [IN] buffer pointer */
/* RETURN VALUES */
/* VFL_SUCCESS */
/* VFL_Copyback is completed. */
/* VFL_CRITICAL_ERROR */
/* VFL_Copyback is failed. */
/* VFL_U_ECC_ERROR */
/* ECC uncorrectable error occurs from FIL read function. */
/* NOTES */
/* */
/*****************************************************************************/
INT32
VFL_Copyback(UINT32 nSrcVpn, UINT32 nDesVpn, Buffer *pBuf)
{
VFLPacket stPacket;
UINT32 nResult;
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback()\r\n")));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback() nSrcVpn = %d\r\n"), nSrcVpn));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback() nDesVpn = %d\r\n"), nDesVpn));
VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback() pBuf = 0x%x\r\n"), pBuf));
do {
/* VFL_Copyback */
stPacket.nCtrlCode = PM_HAL_VFL_CPBACK;
stPacket.nVbn = 0; // Not used
stPacket.nVpn = 0; // Not used
stPacket.pBuf = pBuf;
stPacket.nVpn = nSrcVpn; // Not used
stPacket.nVpn = nDesVpn; // Not used
stPacket.bCleanCheck= 0;
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer (Additional Control Code) */
sizeof(VFLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -