pseudobml.c
来自「SAMSUNG S3C6410 CPU BSP for winmobile6」· C语言 代码 · 共 1,257 行 · 第 1/5 页
C
1,257 行
/* BML_SUCCESS */
/* BML_Open is completed */
/* BML_INVALID_PARAM */
/* invalid parameters */
/* BML_UNFORMATTED */
/* volume is unformatted */
/* NOTES */
/* Before BML_Open() is called, BML_Init() should be called. */
/* */
/*****************************************************************************/
INT32
BML_Open(UINT32 nVol)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_Open()\r\n")));
do {
/* BML_Open */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_OPEN;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = 0;
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 (Additional Control Code) */
sizeof(BMLPacket), /* Size of Input buffer */
NULL, /* Output buffer */
0, /* Size of Output buffer */
&nResult); /* Error Return */
if ((nResult != BML_SUCCESS) && (nResult != BML_ALREADY_OPENED))
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_Open() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_Open()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_Close */
/* DESCRIPTION */
/* This function closes the volume. */
/* */
/* PARAMETERS */
/* nVol [IN] */
/* volume number */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_Close is completed */
/* BML_CRITICAL_ERROR */
/* critical error */
/* BML_INVALID_PARAM */
/* invalid parameter */
/* NOTES */
/* */
/*****************************************************************************/
INT32
BML_Close(UINT32 nVol)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_Close()\r\n")));
do {
/* BML_Close */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_CLOSE;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = 0;
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_Close() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_Close()\r\n")));
return (INT32)nResult;
}
/*****************************************************************************/
/* */
/* NAME */
/* BML_GetPlaneNum */
/* DESCRIPTION */
/* This function get the virtual plane number, which corresponds to */
/* the virtual block number. */
/* */
/* PARAMETERS */
/* nVol */
/* volume number */
/* nVbn */
/* virtual block number */
/* pPlaneNum */
/* pointer which plane number is stored */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_GetPlaneNum is completed. */
/* BML_INVALID_PARAM */
/* invalid parameter */
/* BML_ACQUIRE_SM_ERROR */
/* acquiring semaphore is failed */
/* BML_RELEASE_SM_ERROR */
/* releasing semaphore is failed */
/* NOTES */
/* This function is made by the requirement of STL. */
/* */
/*****************************************************************************/
#if 0 // kathy
INT32
BML_GetPlaneNum(UINT32 nVol, UINT32 nVbn, UINT32 *pVirPlaneNum)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_GetPlaneNum()\r\n")));
do {
/* Get Plane Num */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_GET_PLANENUM;
stPacket.nVbn = nVbn;
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = 0;
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),
pVirPlaneNum, /* Output buffer */
sizeof(UINT32),
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_GetPlaneNum() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_GetPlaneNum()\r\n")));
return (INT32)nResult;
}
#endif
/*****************************************************************************/
/* */
/* NAME */
/* BML_GetVolInfo */
/* DESCRIPTION */
/* This function get the volume information, which is as follows. */
/* pstVolSpec->nPgsPerBlk */
/* pstVolSpec->nSctsPerPg */
/* pstVolSpec->nLsnPos */
/* pstVolSpec->nTrTime */
/* pstVolSpec->nTwTime */
/* pstVolSpec->nTeTime */
/* pstVolSpec->nTfTime */
/* */
/* PARAMETERS */
/* nVol */
/* volume number */
/* pstVolSpec */
/* pointer which the volume information is stored */
/* RETURN VALUES */
/* BML_SUCCESS */
/* BML_GetVolInfo is completed */
/* BML_INVALID_PARAM */
/* invalid parameter */
/* NOTES */
/* */
/*****************************************************************************/
INT32
BML_GetVolInfo(UINT32 nVol, BMLVolSpec *pstVolSpec)
{
BMLPacket stPacket;
UINT32 nResult;
BMLP_LOG_PRINT((TEXT("[BMLP: IN] ++BML_GetVolInfo()\r\n")));
do {
/* Get Volume Information */
stPacket.nVol = nVol;
stPacket.nCtrlCode = PS_HAL_BML_GET_VOLUMEINFO;
stPacket.nVbn = 0; // Not used
stPacket.nVsn = 0; // Not used
stPacket.nNumOfScts = 0; // Not used
stPacket.nOpFlag = 0;
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),
pstVolSpec, /* Output buffer */
sizeof(BMLVolSpec),
&nResult);
if (nResult != BML_SUCCESS)
{
BMLP_ERR_PRINT((TEXT("[BMLP:ERR] BML_GetVolInfo() failure. ERR Code=%x\r\n"), nResult));
break;
}
} while(0);
BMLP_LOG_PRINT((TEXT("[BMLP:OUT] --BML_GetVolInfo()\r\n")));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?