Lines Matching refs:pcache1
247 #define pcache1 (GLOBAL(struct PCacheGlobal, pcache1_g)) macro
276 if( pcache1.isInit ){ in sqlite3PCacheBufferSetup()
281 pcache1.szSlot = sz; in sqlite3PCacheBufferSetup()
282 pcache1.nSlot = pcache1.nFreeSlot = n; in sqlite3PCacheBufferSetup()
283 pcache1.nReserve = n>90 ? 10 : (n/10 + 1); in sqlite3PCacheBufferSetup()
284 pcache1.pStart = pBuf; in sqlite3PCacheBufferSetup()
285 pcache1.pFree = 0; in sqlite3PCacheBufferSetup()
286 pcache1.bUnderPressure = 0; in sqlite3PCacheBufferSetup()
289 p->pNext = pcache1.pFree; in sqlite3PCacheBufferSetup()
290 pcache1.pFree = p; in sqlite3PCacheBufferSetup()
293 pcache1.pEnd = pBuf; in sqlite3PCacheBufferSetup()
304 if( pcache1.nInitPage==0 ) return 0; in pcache1InitBulk()
308 if( pcache1.nInitPage>0 ){ in pcache1InitBulk()
309 szBulk = pCache->szAlloc * (i64)pcache1.nInitPage; in pcache1InitBulk()
311 szBulk = -1024 * (i64)pcache1.nInitPage; in pcache1InitBulk()
346 assert( sqlite3_mutex_notheld(pcache1.grp.mutex) ); in pcache1Alloc()
347 if( nByte<=pcache1.szSlot ){ in pcache1Alloc()
348 sqlite3_mutex_enter(pcache1.mutex); in pcache1Alloc()
349 p = (PgHdr1 *)pcache1.pFree; in pcache1Alloc()
351 pcache1.pFree = pcache1.pFree->pNext; in pcache1Alloc()
352 pcache1.nFreeSlot--; in pcache1Alloc()
353 pcache1.bUnderPressure = pcache1.nFreeSlot<pcache1.nReserve; in pcache1Alloc()
354 assert( pcache1.nFreeSlot>=0 ); in pcache1Alloc()
358 sqlite3_mutex_leave(pcache1.mutex); in pcache1Alloc()
368 sqlite3_mutex_enter(pcache1.mutex); in pcache1Alloc()
371 sqlite3_mutex_leave(pcache1.mutex); in pcache1Alloc()
384 if( SQLITE_WITHIN(p, pcache1.pStart, pcache1.pEnd) ){ in pcache1Free()
386 sqlite3_mutex_enter(pcache1.mutex); in pcache1Free()
389 pSlot->pNext = pcache1.pFree; in pcache1Free()
390 pcache1.pFree = pSlot; in pcache1Free()
391 pcache1.nFreeSlot++; in pcache1Free()
392 pcache1.bUnderPressure = pcache1.nFreeSlot<pcache1.nReserve; in pcache1Free()
393 assert( pcache1.nFreeSlot<=pcache1.nSlot ); in pcache1Free()
394 sqlite3_mutex_leave(pcache1.mutex); in pcache1Free()
402 sqlite3_mutex_enter(pcache1.mutex); in pcache1Free()
404 sqlite3_mutex_leave(pcache1.mutex); in pcache1Free()
416 if( p>=pcache1.pStart && p<pcache1.pEnd ){ in pcache1MemSize()
417 return pcache1.szSlot; in pcache1MemSize()
447 assert( pcache1.separateCache==0 ); in pcache1AllocPage()
448 assert( pCache->pGroup==&pcache1.grp ); in pcache1AllocPage()
521 if( pcache1.nSlot && (pCache->szPage+pCache->szExtra)<=pcache1.szSlot ){ in pcache1UnderMemoryPressure()
522 return pcache1.bUnderPressure; in pcache1UnderMemoryPressure()
699 assert( pcache1.isInit==0 ); in pcache1Init()
700 memset(&pcache1, 0, sizeof(pcache1)); in pcache1Init()
718 pcache1.separateCache = 0; in pcache1Init()
720 pcache1.separateCache = sqlite3GlobalConfig.pPage==0 in pcache1Init()
723 pcache1.separateCache = sqlite3GlobalConfig.pPage==0; in pcache1Init()
728 pcache1.grp.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_LRU); in pcache1Init()
729 pcache1.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PMEM); in pcache1Init()
732 if( pcache1.separateCache in pcache1Init()
736 pcache1.nInitPage = sqlite3GlobalConfig.nPage; in pcache1Init()
738 pcache1.nInitPage = 0; in pcache1Init()
740 pcache1.grp.mxPinned = 10; in pcache1Init()
741 pcache1.isInit = 1; in pcache1Init()
752 assert( pcache1.isInit!=0 ); in pcache1Shutdown()
753 memset(&pcache1, 0, sizeof(pcache1)); in pcache1Shutdown()
772 sz = sizeof(PCache1) + sizeof(PGroup)*pcache1.separateCache; in pcache1Create()
775 if( pcache1.separateCache ){ in pcache1Create()
779 pGroup = &pcache1.grp; in pcache1Create()
1223 return pcache1.mutex; in sqlite3Pcache1Mutex()
1238 assert( sqlite3_mutex_notheld(pcache1.grp.mutex) ); in sqlite3PcacheReleaseMemory()
1239 assert( sqlite3_mutex_notheld(pcache1.mutex) ); in sqlite3PcacheReleaseMemory()
1242 pcache1EnterMutex(&pcache1.grp); in sqlite3PcacheReleaseMemory()
1244 && (p=pcache1.grp.lru.pLruPrev)!=0 in sqlite3PcacheReleaseMemory()
1252 pcache1LeaveMutex(&pcache1.grp); in sqlite3PcacheReleaseMemory()
1271 for(p=pcache1.grp.lru.pLruNext; p && !p->isAnchor; p=p->pLruNext){ in sqlite3PcacheStats()
1275 *pnCurrent = pcache1.grp.nPurgeable; in sqlite3PcacheStats()
1276 *pnMax = (int)pcache1.grp.nMaxPage; in sqlite3PcacheStats()
1277 *pnMin = (int)pcache1.grp.nMinPage; in sqlite3PcacheStats()