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

📄 pseudovfl.c

📁 s3c2450 bsp for wince 5.0 经验证,完全没问题
💻 C
📖 第 1 页 / 共 4 页
字号:
        /* VFL_Format */
        stPacket.nCtrlCode  = PM_HAL_VFL_FORMAT;
        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_Format() failure. ERR Code=%x\r\n"), nResult));
    
            break;
        }

    } while(0);

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

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Read                                                             */
/* DESCRIPTION                                                               */
/*      This function reads virtual page.                                    */
/* PARAMETERS                                                                */
/*      nVpn		[IN]	virtual page number                              */
/*      pBuf		[IN]	Buffer pointer                                   */
/*      bCleanCheck	[IN]	clean check or not                               */
/* RETURN VALUES                                                             */
/*      VFL_SUCCESS                                                          */
/*            VFL_Read is completed.                                         */
/*      VFL_CRITICAL_ERROR                                                   */
/*            critical error                                                 */
/*		VFL_U_ECC_ERROR                                                      */
/*            ECC uncorrectable error occurs from FIL read function.         */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Read(UINT32 nVpn, Buffer *pBuf, BOOL32 bCleanCheck)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read()  nVpn        = %d\r\n"), nVpn));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read()  pBuf        = 0x%x\r\n"), pBuf));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Read()  bCleanCheck = %d\r\n"), bCleanCheck));

    do {
        /* VFL_Read */
        stPacket.nCtrlCode  = PM_HAL_VFL_READ;
        stPacket.nVbn       = 0;            // Not used
        stPacket.nVpn       = nVpn;
        stPacket.pBuf       = pBuf;
        stPacket.nSrcVpn    = 0;
        stPacket.nDesVpn    = 0;
        stPacket.bCleanCheck= bCleanCheck;
    
        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_Read() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

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

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Write                                                            */
/* DESCRIPTION                                                               */
/*      This function writes virtual page.                                   */
/* PARAMETERS                                                                */
/*      nVpn		[IN]	virtual page number                              */
/*      pBuf		[IN]	Buffer pointer                                   */
/* RETURN VALUES                                                             */
/*      VFL_SUCCESS                                                          */
/*            VFL_Write is completed.                                        */
/*      VFL_CRITICAL_ERROR                                                   */
/*            VFL_Write is failed.                                           */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Write(UINT32 nVpn, Buffer *pBuf)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Write()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Wrhte()  nVpn = %d\r\n"), nVpn));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Wrhte()  pBuf = 0x%x\r\n"), pBuf));

    do {
        /* VFL_Write */
        stPacket.nCtrlCode  = PM_HAL_VFL_WRITE;
        stPacket.nVbn       = 0;            // Not used
        stPacket.nVpn       = nVpn;
        stPacket.pBuf       = pBuf;
        stPacket.nSrcVpn    = 0;
        stPacket.nDesVpn    = 0;
        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_Write() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

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

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Erase                                                            */
/* DESCRIPTION                                                               */
/*      This function erases virtual block(super block).				     */
/* PARAMETERS                                                                */
/*      nVbn	[IN]	virtual block number 								 */
/* RETURN VALUES                                                             */
/* 		VFL_SUCCESS                                                          */
/*            VFL_Erase is completed.  	                                     */
/*      VFL_CRITICAL_ERROR                                                   */
/*            VFL_Erase is failed.    		                                 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Erase(UINT32 nVbn)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Erase()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Erase()  nVbn = %d(0x%x)\r\n"), nVbn, nVbn));

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

    } while(0);

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

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      VFL_Copyback                                                         */
/* DESCRIPTION                                                               */
/*      This function copies page data from source to destination.		     */
/* PARAMETERS                                                                */
/*      nSrcVpn		[IN]	virtual block number (source)					 */ 
/*      nDesVpn		[IN]	virtual block number (destination)				 */
/*      pBuf		[IN]	buffer pointer		 							 */
/* RETURN VALUES                                                             */
/* 		VFL_SUCCESS                                                          */
/*            VFL_Copyback is completed.                                     */
/*      VFL_CRITICAL_ERROR                                                   */
/*            VFL_Copyback is failed.    	                                 */
/*		VFL_U_ECC_ERROR														 */
/*			  ECC uncorrectable error occurs from FIL read function.		 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
VFL_Copyback(UINT32 nSrcVpn, UINT32 nDesVpn, Buffer *pBuf)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback()  nSrcVpn = %d\r\n"), nSrcVpn));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback()  nDesVpn = %d\r\n"), nDesVpn));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++VFL_Copyback()  pBuf    = 0x%x\r\n"), pBuf));

    do {
        /* VFL_Copyback */
        stPacket.nCtrlCode  = PM_HAL_VFL_CPBACK;
        stPacket.nVbn       = 0;            // Not used
        stPacket.nVpn       = 0;            // Not used
        stPacket.pBuf       = pBuf;
        stPacket.nVpn       = nSrcVpn;            // Not used
        stPacket.nVpn       = nDesVpn;            // 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 */
                        

⌨️ 快捷键说明

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