亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cachebuf.c

?? 6410BSP3
?? C
字號:
/*****************************************************************************/
/*                                                                           */
/* PROJECT : PocketStoreII v1.0.0_build001                                   */
/* FILE    : CacheBuf.c                                                      */
/* PURPOSE : This file implements Cache-Buffer for improving read-speed      */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*                                                                           */
/*                COPYRIGHT 2003 SAMSUNG ELECTRONICS CO., LTD.               */
/*                      ALL RIGHTS RESERVED                                  */
/*                                                                           */
/*   Permission is hereby granted to licensees of Samsung Electronics        */
/*   Co., Ltd. products to use or abstract this computer program for the     */
/*   sole purpose of implementing a product based on Samsung                 */
/*   Electronics Co., Ltd. products. No other rights to reproduce, use,      */
/*   or disseminate this computer program, whether in part or in whole,      */
/*   are granted.                                                            */
/*                                                                           */
/*   Samsung Electronics Co., Ltd. makes no representation or warranties     */
/*   with respect to the performance of this computer program, and           */
/*   specifically disclaims any responsibility for any damages,              */
/*   special or consequential, connected with the use of this program.       */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*                                                                           */
/* REVISION HISTORY                                                          */
/*                                                                           */
/* - 20-MAR-2003 [SongHo Yoon]: first writing                                */
/*                                                                           */
/*****************************************************************************/

#include <windows.h>

#include <CacheBuf.h>

//#include <OEMFlashIO.h>

/*****************************************************************************/
/* Global Variables                                                          */
/*****************************************************************************/

/*****************************************************************************/
/* Imported variable declarations                                            */
/*****************************************************************************/

/*****************************************************************************/
/* Imported function declarations                                            */
/*****************************************************************************/

/*****************************************************************************/
/* Local #define                                                             */
/*****************************************************************************/

#undef DEBUG_NFLAT_CACHEBUF
#ifdef DEBUG_NFLAT_CACHEBUF

	#define	DEBUG_WINCE300

	#if defined(DEBUG_WINCE300)

		#include <windows.h>

		#define	CBUF_DBG_PRINT(x)		RETAILMSG(1, x)

	#endif	//DEBUG_WINCE300

#else  /* DEBUG_NFLAT_CACHEBUF */

	#define CBUF_DBG_PRINT(x)

#endif /* DEBUG_NFLAT_CACHEBUF */

#undef	HEAP_CONSUMPTION

#undef	NFLAT_CACHE_ALGORITHM_1
#define	NFLAT_CACHE_ALGORITHM_2

/*****************************************************************************/
// Local constant definitions
/*****************************************************************************/

/*****************************************************************************/
// Local typedefs
/*****************************************************************************/

/*****************************************************************************/
// Local variables
/*****************************************************************************/

/*****************************************************************************/
// Local function prototypes
/*****************************************************************************/

/*****************************************************************************/
// Function definitions
/*****************************************************************************/

#ifdef HEAP_CONSUMPTION
static UINT giUsedHeap = 0;
#define INC_USED_HEAP(n) giUsedHeap += (n)
#else /* HEAP_COMSUMPTION */
#define INC_USED_HEAP(n)
#endif /* HEAP_COMSUMPTION */

/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*		NFLATCache_Init                                                      */
/* DESCRIPTION                                                               */
/*		This function opens the driver key specified by the active key       */
/* PARAMETERS                                                                */
/*		ActiveKey		Handle to a currently open key or any of the         */
/*						following predefined reserved handle values          */
/* RETURN VALUES                                                             */
/*		Return values is HKEY value of "[ActiveKey]\[Key]", The caller is    */
/*		responsible for closing the returned HKEY                            */
/*                                                                           */
/*****************************************************************************/
NFLAT_CACHEBUF *
NFLATCache_Init(
	UINT nNumOfSecCache
	)
{
	NFLAT_SEC_CACHE *pSecCache;
	NFLAT_CACHEBUF  *pCacheBuf;
	UINT nIdx;

	CBUF_DBG_PRINT((TEXT("++CBUF: NFLATCache_Init nNumOfSecCache=%d\r\n"), nNumOfSecCache));

	
	INC_USED_HEAP(sizeof(NFLAT_CACHEBUF));
	
	pCacheBuf = (NFLAT_CACHEBUF *) LocalAlloc(LPTR, sizeof(NFLAT_CACHEBUF));
	if (NULL == pCacheBuf)
	{
		CBUF_DBG_PRINT((TEXT("CBUF: ERROR: LocalAlloc pCacheBuf=0x%X"), pCacheBuf));
		return NULL;
	}
		
	pCacheBuf->nNumOfSecCache = nNumOfSecCache;

	INC_USED_HEAP(nNumOfSecCache * sizeof(NFLAT_SEC_CACHE));

	pCacheBuf->pSecCache = (NFLAT_SEC_CACHE *) LocalAlloc(LPTR,
							nNumOfSecCache * sizeof(NFLAT_SEC_CACHE));
	if (NULL == pCacheBuf->pSecCache)
	{
		CBUF_DBG_PRINT((TEXT("CBUF: ERROR: LocalAlloc pSecCache=0x%X\r\n"), pCacheBuf->pSecCache));
		LocalFree(pCacheBuf);
		return NULL;
	}

	// Initialize pSecCache[x] of pCacheBuf[].
	pSecCache = pCacheBuf->pSecCache;
	for (nIdx = 0; nIdx < nNumOfSecCache; nIdx ++)
	{
		pSecCache[nIdx].bValid = FALSE;
		pSecCache[nIdx].nSecNum = 0;
		pSecCache[nIdx].nSecHit = 0;
	}

#if defined(HEAP_CONSUMPTION)
	CBUF_DBG_PRINT((TEXT("--CBUF: Allocated memory = %d bytes\r\n"), giUsedHeap));
#endif	//HEAP_CONSUMPTION

	CBUF_DBG_PRINT((TEXT("--CBUF: NFLATCache_Init nNumOfSecCache=%d\r\n"), nNumOfSecCache));

	return pCacheBuf;
}

/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*		NFLATCache_Deinit                                                    */
/* DESCRIPTION                                                               */
/*		This function opens the driver key specified by the active key       */
/* PARAMETERS                                                                */
/*		ActiveKey		Handle to a currently open key or any of the         */
/*						following predefined reserved handle values          */
/* RETURN VALUES                                                             */
/*		Return values is HKEY value of "[ActiveKey]\[Key]", The caller is    */
/*		responsible for closing the returned HKEY                            */
/*                                                                           */
/*****************************************************************************/
VOID
NFLATCache_Deinit(
	NFLAT_CACHEBUF *pCacheBuf
	)
{
	CBUF_DBG_PRINT((TEXT("++CBUF: NFLATCache_Deinit(0x%x)"), pCacheBuf));
	LocalFree(pCacheBuf->pSecCache);
	LocalFree(pCacheBuf);
	CBUF_DBG_PRINT((TEXT("--CBUF: NFLATCache_Deinit")));
}

/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*		NFLATCache_GetSecCache                                               */
/* DESCRIPTION                                                               */
/*		This function opens the driver key specified by the active key       */
/* PARAMETERS                                                                */
/*		ActiveKey		Handle to a currently open key or any of the         */
/*						following predefined reserved handle values          */
/* RETURN VALUES                                                             */
/*		Return values is HKEY value of "[ActiveKey]\[Key]", The caller is    */
/*		responsible for closing the returned HKEY                            */
/*                                                                           */
/*****************************************************************************/
NFLAT_SEC_CACHE *
NFLATCache_GetSecCache(
	NFLAT_CACHEBUF *pCacheBuf,
	UINT nSecNum
	)
{
#if defined(NFLAT_CACHE_ALGORITHM_1)
            
	register UINT nIdx;
	register UINT nNumOfSecCache;
	register NFLAT_SEC_CACHE *pSecCache;
	static UINT nAccessCnt = 0;
	static UINT nTotalHit  = 0;


	nNumOfSecCache = pCacheBuf->nNumOfSecCache;
	pSecCache      = pCacheBuf->pSecCache;
	
	nAccessCnt ++;
	
	CBUF_DBG_PRINT((TEXT("++CBUF: SECTOR(%8d), ACCESS COUNT(%8d), HIT COUNT(%4d)\r\n"),
			nSecNum, nAccessCnt, nTotalHit));
	
	for (nIdx = 0; nIdx < nNumOfSecCache; nIdx ++)
	{
		if ((TRUE == pSecCache[nIdx].bValid) &&
			(nSecNum == pSecCache[nIdx].nSecNum))
		{
			pSecCache[nIdx].nSecHit ++;
			
//			CBUF_DBG_PRINT((TEXT("++CBUF: IDX(%3d) SEC(%8d), HIT(%8d), ACC(%8d)\r\n"),
//					nIdx, nSecNum, pSecCache[nIdx].nSecHit, nAccessCnt));

			nTotalHit ++;

			return &(pSecCache[nIdx]);
		}
	}
	
//	CBUF_DBG_PRINT((TEXT("++CBUF:          SEC(%8d), NOHIT        , ACC(%8d)\r\n"),
//			nSecNum, nAccessCnt));

	return NULL;
	
#elif defined(NFLAT_CACHE_ALGORITHM_2)
	register UINT nIdx, nMaxIdx;
	register UINT nNumOfSecCache;
	register NFLAT_SEC_CACHE *pSecCache;
	register UINT nSelectedIdx;


	nNumOfSecCache = pCacheBuf->nNumOfSecCache;
	pSecCache      = pCacheBuf->pSecCache;
	nMaxIdx        = NUM_OF_SEC_CACHE_COLUMN;

	for (nIdx = 0; nIdx < nMaxIdx; nIdx ++)
	{
		nSelectedIdx = NUM_OF_SEC_CACHE_ROW * nIdx + nSecNum % NUM_OF_SEC_CACHE_ROW;
		if ((TRUE == pSecCache[nSelectedIdx].bValid) &&
			(nSecNum == pSecCache[nSelectedIdx].nSecNum))
		{
			pSecCache[nSelectedIdx].nSecHit ++;
			
			CBUF_DBG_PRINT((TEXT("++CBUF: IDX(%3d/%3d) SEC(%8d), HIT(%8d)\r\n"),
					nSelectedIdx, nSecNum % NUM_OF_SEC_CACHE_ROW, pSecCache[nSelectedIdx].nSecHit));
	
			return &(pSecCache[nSelectedIdx]);
		}
	}

	return NULL;
#endif
}

VOID
NFLATCache_AddSecCache(
	NFLAT_CACHEBUF *pCacheBuf,
	UINT nSecNum,
//	UCHAR aBuf[MAINPAGE_SIZE]
	UCHAR aBuf[PSII_SECTOR_SIZE]
	)
{
#if defined(NFLAT_CACHE_ALGORITHM_1)

	register UINT nIdx1, nIdx2;
	register UINT nNumOfSecCache;
	register NFLAT_SEC_CACHE *pSecCache;
	UINT nSelectedIdx;
	UINT nLowestSecHit;


	nNumOfSecCache = pCacheBuf->nNumOfSecCache;
	pSecCache      = pCacheBuf->pSecCache;

	nSelectedIdx = 0xFFFFFFFF;
	for (nIdx1 = 0; nIdx1 < nNumOfSecCache; nIdx1 ++)
	{
		if (FALSE == pSecCache->bValid)
		{
			nSelectedIdx = nIdx1;
			break;
		}

		pSecCache ++;
	}

	// If there is no free slot, search for SecCache[], which has the lowest nSecHit.
	if (0xFFFFFFFF == nSelectedIdx)
	{
		nSelectedIdx  = nNumOfSecCache - 1;
		nLowestSecHit = pSecCache[nSelectedIdx].nSecHit;
		nIdx2         = nNumOfSecCache - 1;
		pSecCache     = &(pCacheBuf->pSecCache[nSelectedIdx]);

		for (nIdx1 = 0; nIdx1 < nNumOfSecCache; nIdx1 ++)
		{
			if (nLowestSecHit > pSecCache->nSecHit)
			{
				nSelectedIdx = nIdx2;
				nLowestSecHit = pSecCache->nSecHit;
			}

			pSecCache --;
			nIdx2 --;
		}
	}

	pSecCache[nSelectedIdx].bValid  = TRUE;
	pSecCache[nSelectedIdx].nSecNum = nSecNum;
	pSecCache[nSelectedIdx].nSecHit = 1;
//	memcpy(pSecCache[nSelectedIdx].aBuf, aBuf, MAINPAGE_SIZE);
	memcpy(pSecCache[nSelectedIdx].aBuf, aBuf, PSII_SECTOR_SIZE);

#elif defined(NFLAT_CACHE_ALGORITHM_2)

	register UINT nIdx, nMaxIdx;
	register UINT nNumOfSecCache;
	register NFLAT_SEC_CACHE *pSecCache;
	UINT nSelectedIdx1, nSelectedIdx2;
	UINT nLowestSecHit;


	nNumOfSecCache = pCacheBuf->nNumOfSecCache;
	pSecCache      = pCacheBuf->pSecCache;
	nMaxIdx        = NUM_OF_SEC_CACHE_COLUMN;

	// search for free slot.
	nSelectedIdx1 = 0xFFFFFFFF;
	for (nIdx = 0; nIdx < nMaxIdx; nIdx ++)
	{
		nSelectedIdx2 = NUM_OF_SEC_CACHE_ROW * nIdx + nSecNum % NUM_OF_SEC_CACHE_ROW;
		if (FALSE == pSecCache[nSelectedIdx2].bValid)
		{
			nSelectedIdx1 = nSelectedIdx2;
			break;
		}
	}

	// If there is no free slot, search for SecCache[], which has the lowest nSecHit.
	if (0xFFFFFFFF == nSelectedIdx1)
	{
		nSelectedIdx1 = NUM_OF_SEC_CACHE_ROW * 0 + nSecNum % NUM_OF_SEC_CACHE_ROW;
		nLowestSecHit = pSecCache[nSelectedIdx1].nSecHit;

		for (nIdx = 1; nIdx < nMaxIdx; nIdx ++)
		{
			nSelectedIdx2 = NUM_OF_SEC_CACHE_ROW * nIdx + nSecNum % NUM_OF_SEC_CACHE_ROW;
			if (nLowestSecHit > pSecCache[nSelectedIdx2].nSecHit)
			{
				nSelectedIdx1 = nSelectedIdx2;
				nLowestSecHit = pSecCache[nSelectedIdx2].nSecHit;
			}
		}
	}

	pSecCache[nSelectedIdx1].bValid  = TRUE;
	pSecCache[nSelectedIdx1].nSecNum = nSecNum;
	pSecCache[nSelectedIdx1].nSecHit = 1;
//	memcpy(pSecCache[nSelectedIdx1].aBuf, aBuf, MAINPAGE_SIZE);
	memcpy(pSecCache[nSelectedIdx1].aBuf, aBuf, PSII_SECTOR_SIZE);

#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠一区二区| 成人h动漫精品一区二区| 中文字幕日韩av资源站| 日韩久久免费av| 欧美日韩一区成人| 欧美日韩一级片网站| 91色在线porny| 91视频观看视频| 色综合中文综合网| 国产网红主播福利一区二区| 777午夜精品免费视频| 一本到不卡免费一区二区| 不卡视频免费播放| 成+人+亚洲+综合天堂| 成人av在线播放网址| 成人一级黄色片| 成人av片在线观看| 91香蕉视频mp4| 色综合久久综合| 一本色道**综合亚洲精品蜜桃冫| 99视频精品在线| 99精品国产视频| 欧美性生活久久| 欧美日韩亚州综合| 中日韩免费视频中文字幕| 久久―日本道色综合久久| 欧美高清一级片在线观看| 亚洲欧洲日韩一区二区三区| 一卡二卡欧美日韩| 免费人成网站在线观看欧美高清| 麻豆91精品视频| 激情国产一区二区| 99精品久久99久久久久| 欧美综合色免费| 精品日韩欧美在线| 国产精品丝袜黑色高跟| 一级做a爱片久久| 久久99精品国产.久久久久久| 成人综合日日夜夜| 欧美亚洲高清一区| 精品播放一区二区| 亚洲午夜久久久久久久久电影网| 日本欧美一区二区三区乱码 | 日韩欧美在线影院| 亚洲国产精品ⅴa在线观看| 亚洲一区电影777| 国产盗摄女厕一区二区三区| 91蜜桃网址入口| 精品福利av导航| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲高清视频中文字幕| 国模套图日韩精品一区二区 | 亚洲欧美一区二区久久| 青青草原综合久久大伊人精品| 国产成人免费在线视频| 欧美日本视频在线| 亚洲欧洲成人精品av97| 蜜桃在线一区二区三区| 欧美三级一区二区| 中文字幕色av一区二区三区| 裸体健美xxxx欧美裸体表演| 91蝌蚪porny| 国产欧美一区二区在线| 美女视频第一区二区三区免费观看网站| 成人福利视频在线看| 日韩小视频在线观看专区| 一区二区三区四区视频精品免费 | 国产综合一区二区| 欧美午夜电影在线播放| 中文字幕日韩av资源站| 国产精品中文欧美| 欧美精品一区二区在线观看| 视频一区二区欧美| 欧美视频一区二区在线观看| 中文字幕在线免费不卡| 国产精品1024| 久久久91精品国产一区二区精品| 日本在线观看不卡视频| 欧美曰成人黄网| 亚洲精品久久久蜜桃| 色天天综合久久久久综合片| 自拍偷拍亚洲综合| av一区二区三区黑人| 亚洲国产精品高清| aa级大片欧美| 亚洲婷婷综合色高清在线| 不卡高清视频专区| 18成人在线视频| 色综合网色综合| 亚洲一区二区视频在线| 欧美日韩国产色站一区二区三区| 亚洲成人在线网站| 日韩三级.com| 国产高清久久久久| 中文字幕一区二区三区在线观看| 成人动漫一区二区在线| 国产精品久久久久国产精品日日| 不卡大黄网站免费看| 亚洲欧美经典视频| 在线观看91av| 久久97超碰色| 国产清纯白嫩初高生在线观看91| 岛国精品在线观看| 亚洲黄网站在线观看| 欧美精品国产精品| 国产乱码精品一区二区三区忘忧草| 国产色产综合产在线视频| 99国内精品久久| 亚洲v精品v日韩v欧美v专区| 精品国产一区二区三区久久久蜜月| 韩国午夜理伦三级不卡影院| 国产精品久线在线观看| 欧美性受xxxx黑人xyx| 精品一区二区av| 国产精品国产馆在线真实露脸| 在线观看亚洲a| 国模一区二区三区白浆| 最近中文字幕一区二区三区| 欧美精品第一页| 成人激情黄色小说| 美国一区二区三区在线播放| 国产精品网友自拍| 欧美日韩精品免费观看视频| 国产自产视频一区二区三区| 一区二区高清免费观看影视大全| 欧美精品123区| 91在线你懂得| 国产剧情一区二区三区| 亚洲狠狠爱一区二区三区| 国产日韩欧美a| 6080日韩午夜伦伦午夜伦| 成人a区在线观看| 精品在线播放午夜| 日韩国产在线观看| 亚洲精品中文字幕在线观看| 亚洲精品在线免费播放| 在线播放国产精品二区一二区四区| 国产成人高清在线| 另类中文字幕网| 亚洲图片有声小说| 亚洲激情男女视频| 国产精品久久久久aaaa| 国产亚洲一区二区三区在线观看| 3d成人h动漫网站入口| 色呦呦一区二区三区| 成人一二三区视频| 久久成人免费电影| 天天操天天色综合| 亚洲国产综合91精品麻豆| 亚洲色图20p| ...av二区三区久久精品| 久久久久久久网| 精品国产91洋老外米糕| 精品人伦一区二区色婷婷| 7777精品久久久大香线蕉| 欧美日韩日日骚| 欧美日韩免费视频| 欧美色图免费看| 欧美区一区二区三区| 欧美日韩一区二区三区免费看| 91黄色激情网站| 91成人国产精品| 欧美性生活影院| 91精品国产乱码| 精品欧美乱码久久久久久| 日韩美一区二区三区| 精品国产乱码久久久久久牛牛 | 另类调教123区| 久久疯狂做爰流白浆xx| 久久国产精品99久久人人澡| 久久9热精品视频| 国产精品综合视频| 成人网在线免费视频| 99久久精品国产导航| 一本色道久久综合狠狠躁的推荐| 91福利在线免费观看| 欧美日韩三级在线| 日韩免费一区二区三区在线播放| 精品久久久三级丝袜| 国产亚洲一区二区三区四区 | 国产精品天美传媒| 1024成人网| 爽好久久久欧美精品| 国产真实精品久久二三区| 成人午夜短视频| 欧美日韩国产经典色站一区二区三区| 欧美日韩国产成人在线免费| 精品88久久久久88久久久 | 国产69精品久久久久毛片| 成人一区二区三区视频在线观看| eeuss国产一区二区三区| 欧美日韩精品系列| 亚洲精品一区二区精华| 伊人开心综合网| 久久97超碰色| 色婷婷国产精品综合在线观看| 欧美一区二区三区免费| 国产精品美女久久久久aⅴ国产馆| 亚洲综合激情另类小说区| 蜜桃久久精品一区二区|