pseudobml.c
来自「SAMSUNG S3C6410 CPU BSP for winmobile6」· C语言 代码 · 共 1,257 行 · 第 1/5 页
C
1,257 行
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_EraseBlk()\r\n")));
do {
/* BML_EraseBlk */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_MEraseBlk;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = nFlag;
stPacket.pMBuf = NULL;
stPacket.pSBuf = NULL;
stPacket.pstMEBArg = pstMEBArg; // by kathy
stPacket.pSGLBuf = 0; /* added for XSR v1.5.x */
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer */
sizeof(BMLPacket),
NULL, /* Output buffer */
0,
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_EraseBlk() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_EraseBlk()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_Copy */
/* DESCRIPTION */
/* This function copy source virtual sector to target virtual sector */
/* */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* pstCpArg [IN] */
/* pointer of CopyArg structure */
/* nFlag [IN] */
/* Options for copyback */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_CopyBack is completed */
/* BML_WR_PROTECT_ERROR */
/* write protect error */
/* BML_CRITICAL_ERROR */
/* critical error */
/* BML_INVALID_PARAM */
/* invalid parameters */
/* BML_ACQUIRE_SM_ERROR */
/* acquiring semaphore is failed */
/* BML_RELEASE_SM_ERROR */
/* releasing semaphore is failed */
/* NOTES */
/* This function performs FlushOp function of LLD first */
/* */
/*****************************************************************************/
INT32
BML_Copy(UINT32 nVol, CopyArg *pstCpArg, UINT32 nFlag)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_CopyBack()\r\n")));
do {
/* BML_CopyBack */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_COPY;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = nFlag;
stPacket.pMBuf = NULL;
stPacket.pSBuf = NULL;
stPacket.pstMEBArg = 0; // by kathy
stPacket.pSGLBuf = 0; /* added for XSR v1.5.x */
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer */
sizeof(BMLPacket),
pstCpArg, /* Output buffer */
sizeof(CopyArg),
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_CopyBack() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_CopyBack()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_FlushOp */
/* DESCRIPTION */
/* This function flushes the current operation in the given volume. */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* nFlag [IN] */
/* If nFlag is BML_NORMAL_MODE, it handles the FIL error. */
/* If nFlag is BML_EMERGENCY_MODE, it handles the FIL error. */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_FlushOp is completed, */
/* BML_CRITICAL_ERROR */
/* critical error occurs */
/* BML_INVALID_PARAM */
/* If volume data structure isn't initilized, it returns */
/* BML_ACQUIRE_SM_ERROR */
/* acquiring semaphore is failed */
/* BML_RELEASE_SM_ERROR */
/* releasing semaphore is failed */
/* NOTES */
/* if nFlag is BML_EMERGENCY_MODE, BML_FlushOp waits for 2 * erase time */
/* maximally. */
/* */
/*****************************************************************************/
INT32
BML_FlushOp(UINT32 nVol, UINT32 nFlag)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_FlushOp()\r\n")));
do {
/* BML_FlushOp */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_FLUSHOP;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = nFlag;
stPacket.pMBuf = NULL;
stPacket.pSBuf = NULL;
stPacket.pstMEBArg = 0; // by kathy
stPacket.pSGLBuf = 0; /* added for XSR v1.5.x */
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer */
sizeof(BMLPacket),
NULL, /* Output buffer */
0,
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_FlushOp() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_FlushOp()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_ReplaceBlk */
/* DESCRIPTION */
/* This function replace the given virtual block */
/* */
/* PARAMETERS */
/* nVol */
/* volume number */
/* nVbn */
/* virtual block number */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_ProtectROArea is completed */
/* BML_INVALID_PARAM */
/* invalid parameters */
/* BML_ACQUIRE_SM_ERROR */
/* acquiring semaphore is failed */
/* BML_RELEASE_SM_ERROR */
/* releasing semaphore is failed */
/* NOTES */
/* */
/*****************************************************************************/
INT32
BML_ReplaceBlk(UINT32 nVol, UINT32 nVbn)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_ReplaceBlk()\r\n")));
do {
/* BML_ReplaceBlk */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_REPLACEBLK;
stPacket.nVbn = nVbn; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = 0; // Not used
stPacket.pMBuf = NULL;
stPacket.pSBuf = NULL;
stPacket.pstMEBArg = 0; // by kathy
stPacket.pSGLBuf = 0; /* added for XSR v1.5.x */
KernelIoControl(IOCTL_POCKETSTOREII_CMD, /* IO Control Code */
&stPacket, /* Input buffer */
sizeof(BMLPacket),
NULL, /* Output buffer */
0,
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_ReplaceBlk() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_ReplaceBlk()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_LoadPIEntry */
/* DESCRIPTION
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?