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 + -
显示快捷键?