⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pseudovfl.c

📁 s3c2450 bsp for wince 5.0 经验证,完全没问题
💻 C
📖 第 1 页 / 共 4 页
字号:
        if (nResult != VFL_SUCCESS)
        {
            VFLP_ERR_PRINT((TEXT("[VFLP:ERR]  VFL_Copyback() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Copyback()\r\n")));

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Sync                                                             */
/* DESCRIPTION                                                               */
/*      This function checks all bank's status.							     */
/* PARAMETERS                                                                */
/*      none										                         */
/* RETURN VALUES                                                             */
/* 		VFL_SUCCESS                                                          */
/*            VFL_Sync is completed.  	                                     */
/*      VFL_CRITICAL_ERROR                                                   */
/*            VFL_Sync is failed.    		                                 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Sync(VOID)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Sync()\r\n")));

    do {
        /* VFL_Sync */
        stPacket.nCtrlCode  = PM_HAL_VFL_SYNC;
        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_Sync() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Sync()\r\n")));

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Close                                                            */
/* DESCRIPTION                                                               */
/*      This function releases VFL layer.								     */
/* PARAMETERS                                                                */
/*      none			                                                     */
/* RETURN VALUES                                                             */
/*      none			                                                     */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Close(VOID)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Close()\r\n")));

    do {
        /* VFL_Close */
        stPacket.nCtrlCode  = PM_HAL_VFL_CLOSE;
        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_Close() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_Close()\r\n")));

    return (INT32)nResult;
}    


#if (WMR_SUPPORT_META_WEAR_LEVEL)
/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_GetFTLCxtVbn                                                     */
/* DESCRIPTION                                                               */
/*      This function is returning the recent FTL context block position     */
/* PARAMETERS                                                                */
/*		aFTLCxtVbn  [OUT]   Recent FTL context block list					 */
/* RETURN VALUES                                                             */
/* 		none                                                                 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
void
VFL_GetFTLCxtVbn(UINT16      *pFTLCxtVbn)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_GetFTLCxtVbn()\r\n")));

    do {
        /* VFL_GetFTLCxtVbn */
        stPacket.nCtrlCode  = PM_HAL_VFL_GETFTLCXT;
        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 */
                        pFTLCxtVbn,       /* Output buffer */
                        sizeof(UINT16*),                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        VFLP_LOG_PRINT((TEXT("[VFLP:INF] VFL_GetFTLCxtVbn()  nResult = 0x%x\r\n"), nResult));
        VFLP_LOG_PRINT((TEXT("[VFLP:INF] VFL_GetFTLCxtVbn()  pFTLCxtVbn = 0x%x\r\n"), pFTLCxtVbn));
//        VFLP_LOG_PRINT((TEXT("[VFLP:INF] VFL_GetFTLCxtVbn()  *pFTLCxtVbn = 0x%x\r\n"), *pFTLCxtVbn));
        
        if (nResult != VFL_SUCCESS)
        {
            VFLP_ERR_PRINT((TEXT("[VFLP:ERR]  VFL_GetFTLCxtVbn() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_GetFTLCxtVbn()\r\n")));

//    return (UINT16*)pFTLCxtVbn;
}    
#endif


#if (WMR_SUPPORT_META_WEAR_LEVEL)
/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_ChangeFTLCxtVbn	                                                 */
/* DESCRIPTION                                                               */
/*      This function change the virtual block number of FTL context block   */
/* PARAMETERS                                                                */
/*      aFTLCxtVbn  [IN]    FTL context block list                           */
/*                          that replace old FTL context positon             */
/* RETURN VALUES                                                             */
/* 		VFL_SUCCESS                                                          */
/*            VFL_Format is completed.                                       */
/*      VFL_CRITICAL_ERROR                                                   */
/*            VFL_Format is failed.    		                                 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_ChangeFTLCxtVbn(UINT16 *pFTLCxtVbn)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_ChangeFTLCxtVbn()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_ChangeFTLCxtVbn()  *pFTLCxtVbn = %d\r\n"), *pFTLCxtVbn));

    do {
        /* VFL_ChangeFTLCxtVbn */
        stPacket.nCtrlCode  = PM_HAL_VFL_CHANGEFTLCXT;
        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 */
                        (LPVOID)pFTLCxtVbn,       /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */
                        
        if (nResult != VFL_SUCCESS)
        {
            VFLP_ERR_PRINT((TEXT("[VFLP:ERR]  VFL_ChangeFTLCxtVbn() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[VFLP:OUT] --VFL_ChangeFTLCxtVbn()\r\n")));

    return (INT32)nResult;
}    
#endif


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      BUF_Get	                                                             */
/* DESCRIPTION                                                               */
/*      This function returns a new free buffer. 						     */
/*		if there is not a free buffer, this function calls the sync function */
/*		and generates a new free buffer.									 */
/* PARAMETERS                                                                */
/*		eType			[IN]												 */
/*				buffer type													 */
/* RETURN VALUES                                                             */
/* 		Buffer	                                                             */
/*            BUF_Get is completed.                                          */
/*      NULL			                                                     */
/*            BUF_Get is failed.    		                                 */
/* NOTES                                                                     */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -