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

📄 pseudoftl.c

📁 s3c2450 bsp for wince 5.0 经验证,完全没问题
💻 C
📖 第 1 页 / 共 3 页
字号:
        KernelIoControl(IOCTL_POCKETSTOREII_CMD,  /* Io Control Code */
                        &stPacket,                /* Input buffer (Additional Control Code) */
                        sizeof(FTLPacket),        /* Size of Input buffer */
                        NULL,                     /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        if (nResult != FTL_SUCCESS)
        {
            FTLP_ERR_PRINT((TEXT("[FTLP:ERR]  FTL_Format() failure. ERR Code=%x\r\n"), nResult));

            break;
        }

    } while(0);

    FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Format()\r\n")));

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      FTL_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                                                             */
/*		FTL_SUCCESS															 */
/*				FTL_Read is completed										 */
/*		FTL_CRITICAL_ERROR													 */
/*				FTL_Read is failed											 */
/*		FTL_USERDATA_ERROR													 */
/*				there is an uncorrectable read error on user data			 */
/*		FTL_OUT_OF_RANGE													 */
/*				input parameters are invalid								 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
FTL_Read(UINT32 nLsn, UINT32 nNumOfScts, UINT8 *pBuf)
{
    FTLPacket   stPacket;
    UINT32      nResult;

    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()\r\n")));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()  nLsn        = %d\r\n"), nLsn));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()  nNumOfScts  = %d\r\n"), nNumOfScts));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Read()  pBuf        = 0x%x\r\n"), pBuf));

    do {
        /* FTL_Read */
        stPacket.nCtrlCode  = PM_HAL_FTL_READ;
        stPacket.nLsn       = nLsn;
        stPacket.nNumOfScts = nNumOfScts;
        stPacket.pBuf       = pBuf;
        stPacket.pTotalScts = NULL;

        KernelIoControl(IOCTL_POCKETSTOREII_CMD,  /* IO Control Code */
                        &stPacket,                /* Input buffer (Additional Control Code) */
                        sizeof(FTLPacket),        /* Size of Input buffer */
                        NULL,                     /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        if (nResult != FTL_SUCCESS)
        {
            FTLP_ERR_PRINT((TEXT("[FTLP:ERR]  FTL_Read() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Read()\r\n")));

    return (INT32)nResult;
}


#if (WMR_READ_RECLAIM)
/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      FTL_ReadReclaim		                                                 */
/* DESCRIPTION                                                               */
/*      This function checks read reclaim map & reclaims read error blks.	 */
/* PARAMETERS                                                                */
/*		none																 */
/* RETURN VALUES                                                             */
/*		FTL_SUCCESS															 */
/*				FTL_ReadReclaim is completed								 */
/*		FTL_CRITICAL_ERROR													 */
/*				FTL_ReadReclaim is failed									 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
FTL_ReadReclaim(VOID)
{
    FTLPacket   stPacket;
    UINT32      nResult;

    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_ReadReclaim()\r\n")));

    do {
        /* FTL_ReadReclaim */
        stPacket.nCtrlCode  = PM_HAL_FTL_READRECLAIM;
        stPacket.nLsn       = 0;
        stPacket.nNumOfScts = 0;
        stPacket.pBuf       = NULL;
        stPacket.pTotalScts = NULL;

        KernelIoControl(IOCTL_POCKETSTOREII_CMD,  /* IO Control Code */
                        &stPacket,                /* Input buffer (Additional Control Code) */
                        sizeof(FTLPacket),        /* Size of Input buffer */
                        NULL,                     /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        if (nResult != FTL_SUCCESS)
        {
            FTLP_ERR_PRINT((TEXT("[FTLP:ERR]  FTL_ReadReclaim() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_ReadReclaim()\r\n")));

    return (INT32)nResult;
}
#endif


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      FTL_Write                                                            */
/* DESCRIPTION                                                               */
/*      This function writes virtual page.                                   */
/* PARAMETERS                                                                */
/*      nVpn		[IN]	virtual page number                              */
/*      pBuf		[IN]	Buffer pointer                                   */
/* RETURN VALUES                                                             */
/*		FTL_SUCCESS															 */
/*				FTL_Write is completed										 */
/*		FTL_CRITICAL_ERROR													 */
/*				FTL_Write is failed											 */
/*		FTL_OUT_OF_RANGE													 */
/*				input parameters are invalid								 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
FTL_Write(UINT32 nLsn, UINT32 nNumOfScts, UINT8 *pBuf)
{
    FTLPacket   stPacket;
    UINT32      nResult;

    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Write()\r\n")));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte()  nVpn        = %d\r\n"), nLsn));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte()  nNumOfScts  = %d\r\n"), nNumOfScts));
    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_Wrhte()  pBuf        = 0x%x\r\n"), pBuf));

    do {
        /* FTL_Write */
        stPacket.nCtrlCode  = PM_HAL_FTL_WRITE;
        stPacket.nLsn       = nLsn;
        stPacket.nNumOfScts = nNumOfScts;
        stPacket.pBuf       = pBuf;
        stPacket.pTotalScts = NULL;

        KernelIoControl(IOCTL_POCKETSTOREII_CMD,  /* IO Control Code */
                        &stPacket,                /* Input buffer (Additional Control Code) */
                        sizeof(FTLPacket),        /* Size of Input buffer */
                        NULL,                     /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        if (nResult != FTL_SUCCESS)
        {
            FTLP_ERR_PRINT((TEXT("[FTLP:ERR]  FTL_Write() failure. ERR Code=%x\r\n"), nResult));
            break;
        }

    } while(0);

    FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_Write()\r\n")));

    return (INT32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      FTL_GarbageCollect	                                                 */
/* DESCRIPTION                                                               */
/*      This function call _Merge(NULL) function.							 */
/* PARAMETERS                                                                */
/*		none																 */
/* RETURN VALUES                                                             */
/*		TRUE32																 */
/*				FTL_GarbageCollect is success.								 */
/*		FALSE32																 */
/*				FTL_GarbageCollect is failed.								 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
BOOL32
FTL_GarbageCollect(VOID)
{
    FTLPacket   stPacket;
    UINT32      nResult;

    FTLP_LOG_PRINT((TEXT("[FTLP: IN] ++FTL_GarbageCollect()\r\n")));

    do {
        /* FTL_ReadReclaim */
        stPacket.nCtrlCode  = PM_HAL_FTL_GARBAGECOLLECT;
        stPacket.nLsn       = 0;
        stPacket.nNumOfScts = 0;
        stPacket.pBuf       = NULL;
        stPacket.pTotalScts = NULL;

        KernelIoControl(IOCTL_POCKETSTOREII_CMD,  /* IO Control Code */
                        &stPacket,                /* Input buffer (Additional Control Code) */
                        sizeof(FTLPacket),        /* Size of Input buffer */
                        NULL,                     /* Output buffer */
                        0,                        /* Size of Output buffer */
                        &nResult);                /* Error Return */

        if ((BOOL32)nResult != TRUE32)
        {
            FTLP_ERR_PRINT((TEXT("[FTLP:ERR]  FTL_GarbageCollect() failure.x\r\n")));
            break;
        }

    } while(0);

    FTLP_LOG_PRINT((TEXT("[FTLP:OUT] --FTL_GarbageCollect()\r\n")));

    return (BOOL32)nResult;
}


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      FTL_Close                                                            */
/* DESCRIPTION                                                               */
/*      This function releases FTL layer.								     */
/* PARAMETERS                                                                */
/*      none			                                                     */

⌨️ 快捷键说明

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