Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Give file scope to non-API routines in pcache. Ticket #3392. (CVS 5727) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6521f98ac3a5cd2d959a9672cd07b1d2 |
User & Date: | drh 2008-09-21 15:14:04.000 |
Context
2008-09-22
| ||
06:13 | Remove unused macro Release() from vdbe.c. (CVS 5728) (check-in: 915679431a user: danielk1977 tags: trunk) | |
2008-09-21
| ||
15:14 | Give file scope to non-API routines in pcache. Ticket #3392. (CVS 5727) (check-in: 6521f98ac3 user: drh tags: trunk) | |
2008-09-19
| ||
18:32 | Speed up releaseMemArray() a bit by handling the most common types of memory cells inline. (CVS 5726) (check-in: ce07508550 user: danielk1977 tags: trunk) | |
Changes
Changes to src/pcache.c.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* ** 2008 August 05 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file implements that page cache. ** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* ** 2008 August 05 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file implements that page cache. ** ** @(#) $Id: pcache.c,v 1.31 2008/09/21 15:14:04 drh Exp $ */ #include "sqliteInt.h" /* ** A complete page cache is an instance of this structure. ** ** A cache may only be deleted by its owner and while holding the |
︙ | ︙ | |||
402 403 404 405 406 407 408 | } /* ** Allocate a page cache line. Look in the page cache memory pool first ** and use an element from it first if available. If nothing is available ** in the page cache memory pool, go to the general purpose memory allocator. */ | | | 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 | } /* ** Allocate a page cache line. Look in the page cache memory pool first ** and use an element from it first if available. If nothing is available ** in the page cache memory pool, go to the general purpose memory allocator. */ static void *pcacheMalloc(int sz, PCache *pCache){ assert( sqlite3_mutex_held(pcache_g.mutex) ); if( sz<=pcache_g.szSlot && pcache_g.pFree ){ PgFreeslot *p = pcache_g.pFree; pcache_g.pFree = p->pNext; sqlite3StatusSet(SQLITE_STATUS_PAGECACHE_SIZE, sz); sqlite3StatusAdd(SQLITE_STATUS_PAGECACHE_USED, 1); return (void*)p; |
︙ | ︙ | |||
441 442 443 444 445 446 447 | pcacheExitMutex(); return p; } /* ** Release a pager memory allocation */ | | | 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 | pcacheExitMutex(); return p; } /* ** Release a pager memory allocation */ static void pcacheFree(void *p){ assert( sqlite3_mutex_held(pcache_g.mutex) ); if( p==0 ) return; if( p>=pcache_g.pStart && p<pcache_g.pEnd ){ PgFreeslot *pSlot; sqlite3StatusAdd(SQLITE_STATUS_PAGECACHE_USED, -1); pSlot = (PgFreeslot*)p; pSlot->pNext = pcache_g.pFree; |
︙ | ︙ | |||
813 814 815 816 817 818 819 | pcacheEnterMutex(); pcacheRemoveFromList(&pCache->pClean, p); pcacheAddToList(&pCache->pDirty, p); pcacheExitMutex(); p->flags |= PGHDR_DIRTY; } | | | 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 | pcacheEnterMutex(); pcacheRemoveFromList(&pCache->pClean, p); pcacheAddToList(&pCache->pDirty, p); pcacheExitMutex(); p->flags |= PGHDR_DIRTY; } static void pcacheMakeClean(PgHdr *p){ PCache *pCache = p->pCache; assert( p->apSave[0]==0 && p->apSave[1]==0 ); assert( p->flags & PGHDR_DIRTY ); pcacheRemoveFromList(&pCache->pDirty, p); pcacheAddToList(&pCache->pClean, p); p->flags &= ~PGHDR_DIRTY; if( p->nRef==0 ){ |
︙ | ︙ | |||
887 888 889 890 891 892 893 | pcacheAddToHash(p); pcacheExitMutex(); } /* ** Remove all content from a page cache */ | | | 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 | pcacheAddToHash(p); pcacheExitMutex(); } /* ** Remove all content from a page cache */ static void pcacheClear(PCache *pCache){ PgHdr *p, *pNext; assert( sqlite3_mutex_held(pcache_g.mutex) ); for(p=pCache->pClean; p; p=pNext){ pNext = p->pNext; pcacheRemoveFromLruList(p); pcachePageFree(p); } |
︙ | ︙ |