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

📄 pseudovfl.c

📁 s3c2450 bsp for wince 5.0 经验证,完全没问题
💻 C
📖 第 1 页 / 共 4 页
字号:
/*                                                                           */
/*****************************************************************************/
Buffer *
BUF_Get(BUFType eType)
{
    VFLPacket   stPacket;
    Buffer      *pBuf;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[VFLP: IN] ++BUF_Get()\r\n")));
    VFLP_LOG_PRINT((TEXT("[VFLP: IN] BUF_Get()  eType = %d\r\n"), eType));

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

        pBuf = stPacket.pBuf;
        VFLP_LOG_PRINT((TEXT("[VFLP: IN] BUF_Get()  pBuf = 0x%x\r\n"), pBuf));

    } while(0);

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

    return pBuf;
}    


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      BUF_Reget                                                            */
/* DESCRIPTION                                                               */
/*      This function changes the type of the buffer.					     */
/* PARAMETERS                                                                */
/*      pBuf			[IN/OUT]                                             */
/*				buffer pointer												 */
/*		eType			[IN]												 */
/*				buffer type													 */
/* RETURN VALUES                                                             */
/*		none																 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
VOID
BUF_Reget(Buffer *pBuf, BUFType eType)
{
    VFLPacket   stPacket;
    UINT32      nResult;

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

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

    } while(0);

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

    return;
}    


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      BUF_Release                                                          */
/* DESCRIPTION                                                               */
/*      This function releases the buffer to the buffer pool.			     */
/* PARAMETERS                                                                */
/*      pBuf			[IN]	                                             */
/*				buffer pointer												 */
/* RETURN VALUES                                                             */
/*		none																 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
VOID
BUF_Release(Buffer *pBuf)
{
    VFLPacket   stPacket;
    UINT32      nResult;

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

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

    } while(0);

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

    return;
}    


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*		FIL_Init                                                             */
/* DESCRIPTION                                                               */
/*      This function initializes FIL layer.                                 */
/* PARAMETERS                                                                */
/*      none                                                                 */
/* RETURN VALUES                                                             */
/*      FIL_SUCCESS                                                          */
/*            VFL_Init is completed.                                         */
/*      FIL_CRITICAL_ERROR                                                   */
/*            VFL_Init is failed.                                            */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
FIL_Init(VOID)
{
    VFLPacket   stPacket;
    UINT32      nResult;

    VFLP_LOG_PRINT((TEXT("[FILP: IN] ++FIL_Init()\r\n")));

    do {
        /* FIL Init */
        stPacket.nCtrlCode  = PM_HAL_FIL_INIT;
        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 != FIL_SUCCESS)
        {
            VFLP_ERR_PRINT((TEXT("[FILP:ERR]  FIL_Init() failure. ERR Code=%x\r\n"), nResult));

            break;
        }

    } while(0);

    VFLP_LOG_PRINT((TEXT("[FILP:OUT] --FIL_Init()\r\n")));

    return (INT32)nResult;
    
}

VOID
GetNandInfo(NAND_INFO * pNandInfo)
{
    VFLPacket   stPacket;
    UINT32      nResult;

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

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

    } while(0);

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

    return;
}

⌨️ 快捷键说明

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