pseudobml.c
来自「SAMSUNG S3C6410 CPU BSP for winmobile6」· C语言 代码 · 共 1,257 行 · 第 1/5 页
C
1,257 行
/* BML_Write */
/* DESCRIPTION */
/* This function writes virtual sectors */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* nVsn [IN] */
/* First virtual sector number for writing */
/* nSctsInPg [IN] */
/* The number of sectors to write */
/* pMBuf [IN] */
/* Main sector buffer for writing */
/* pSBuf [IN] */
/* Spare sector buffer for writing */
/* nFlag [IN] */
/* Options for writing */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_Write 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 */
/* */
/*****************************************************************************/
INT32
BML_MWrite(UINT32 nVol, UINT32 nVsn, UINT32 nNumOfScts,
UINT8 *pMBuf, UINT8 *pSBuf, UINT32 nFlag)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_Write()\r\n")));
do {
/* BML_Write */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_MWRITE;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = nVsn;
stPacket.nNumOfScts = nNumOfScts;
stPacket.nOpFlag = nFlag;
stPacket.pMBuf = pMBuf;
stPacket.pSBuf = pSBuf;
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_Write() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_Write()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_CopyBack */
/* DESCRIPTION */
/* This function copy source virtual sector to target virtual sector */
/* using random input method. */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* pstCpArg [IN] */
/* pointer of CpBkArg 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 */
/* */
/*****************************************************************************/
INT32
BML_CopyBack(UINT32 nVol, CpBkArg *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_CPBACK;
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(CpBkArg),
&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_EraseBlk */
/* DESCRIPTION */
/* This function erases a virtual block */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* nVbn [IN] */
/* virtual block number for erasing */
/* nFlag [IN] */
/* Options for erasing */
/* The value of it can be BML_FLAG_SYNC_OP or BML_FLAG_ASYNC_OP. */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_EraseBlk 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 */
/* */
/*****************************************************************************/
INT32
BML_EraseBlk(UINT32 nVol, UINT32 nVbn, UINT32 nFlag)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_EraseBlk()\r\n")));
do {
/* BML_EraseBlk */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_ERASE;
stPacket.nVbn = nVbn;
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_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_MEraseBlk */
/* DESCRIPTION */
/* This function erases a List of virtual blocks */
/* PARAMETERS */
/* nVol [IN] */
/* Volume number */
/* pstMEBArg [IN] */
/* List of virtual block number for erasing */
/* nFlag [IN] */
/* Options for erasing */
/* The value of it can be BML_FLAG_SYNC_OP or BML_FLAG_ASYNC_OP. */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_EraseBlk is completed */
/* BML_WR_PROTECT_ERROR */
/* write protect error */
/* BML_CRITICAL_ERROR */
/* critical error */
/* BML_ACQUIRE_SM_ERROR */
/* acquiring semaphore is failed */
/* BML_RELEASE_SM_ERROR */
/* releasing semaphore is failed */
/* NOTES */
/* */
/*****************************************************************************/
INT32
BML_MEraseBlk(UINT32 nVol, MEBArg *pstMEBArg, UINT32 nFlag)
{
BMLPacket stPacket;
UINT32 nResult;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?