pcache.c File Reference

Go to the source code of this file.

Classes

struct  PCache
struct  PgFreeslot
struct  PCacheGlobal

Defines

#define pcache_g   (GLOBAL(struct PCacheGlobal, pcache))
#define pcacheEnterMutex()   sqlite3_mutex_enter(pcache_g.mutex)
#define pcacheExitMutex()   sqlite3_mutex_leave(pcache_g.mutex)
#define pcacheMutexHeld()   sqlite3_mutex_held(pcache_g.mutex)
#define expensive_assert(X)
#define N_SORT_BUCKET_ALLOC   25
#define N_SORT_BUCKET   25

Typedefs

typedef struct PgFreeslot PgFreeslot

Functions

static void pcacheRemoveFromHash (PgHdr *pPage)
static void pcacheAddToHash (PgHdr *pPage)
static int pcacheResizeHash (PCache *pCache, int nHash)
static void pcacheRemoveFromList (PgHdr **ppHead, PgHdr *pPage)
static void pcacheAddToList (PgHdr **ppHead, PgHdr *pPage)
static void pcacheRemoveFromLruList (PgHdr *pPage)
static void pcacheAddToLruList (PgHdr *pPage)
void sqlite3PCacheBufferSetup (void *pBuf, int sz, int n)
static void * pcacheMalloc (int sz, PCache *pCache)
void * sqlite3PageMalloc (int sz)
static void pcacheFree (void *p)
void sqlite3PageFree (void *p)
static PgHdrpcachePageAlloc (PCache *pCache)
static void pcachePageFree (PgHdr *p)
static PgHdrpcacheRecyclePage (void)
static int pcacheRecycleOrAlloc (PCache *pCache, PgHdr **ppPage)
int sqlite3PcacheInitialize (void)
void sqlite3PcacheShutdown (void)
int sqlite3PcacheSize (void)
void sqlite3PcacheOpen (int szPage, int szExtra, int bPurgeable, int(*xStress)(void *, PgHdr *), void *pStress, PCache *p)
void sqlite3PcacheSetPageSize (PCache *pCache, int szPage)
int sqlite3PcacheFetch (PCache *pCache, Pgno pgno, int createFlag, PgHdr **ppPage)
void sqlite3PcacheRelease (PgHdr *p)
void sqlite3PcacheRef (PgHdr *p)
void sqlite3PcacheDrop (PgHdr *p)
void sqlite3PcacheMakeDirty (PgHdr *p)
static void pcacheMakeClean (PgHdr *p)
void sqlite3PcacheMakeClean (PgHdr *p)
void sqlite3PcacheCleanAll (PCache *pCache)
void sqlite3PcacheMove (PgHdr *p, Pgno newPgno)
static void pcacheClear (PCache *pCache)
void sqlite3PcacheTruncate (PCache *pCache, Pgno pgno)
static void pcacheEnforceMaxPage (void)
void sqlite3PcacheClose (PCache *pCache)
int sqlite3PcacheClear (PCache *pCache)
static PgHdrpcacheMergeDirtyList (PgHdr *pA, PgHdr *pB)
static PgHdrpcacheSortDirtyList (PgHdr *pIn)
PgHdrsqlite3PcacheDirtyList (PCache *pCache)
int sqlite3PcacheRefCount (PCache *pCache)
int sqlite3PcachePageRefcount (PgHdr *p)
int sqlite3PcachePagecount (PCache *pCache)
void sqlite3PcacheClearFlags (PCache *pCache, int mask)
int sqlite3PcacheGetCachesize (PCache *pCache)
void sqlite3PcacheSetCachesize (PCache *pCache, int mxPage)

Variables

static SQLITE_WSD struct
PCacheGlobal 
pcache

Define Documentation

#define expensive_assert (  ) 
#define N_SORT_BUCKET   25

Definition at line 1027 of file pcache.c.

Referenced by pcacheSortDirtyList().

#define N_SORT_BUCKET_ALLOC   25

Definition at line 1026 of file pcache.c.

Referenced by pcacheSortDirtyList().

#define pcache_g   (GLOBAL(struct PCacheGlobal, pcache))
 
#define pcacheEnterMutex (  )     sqlite3_mutex_enter(pcache_g.mutex)
 
#define pcacheExitMutex (  )     sqlite3_mutex_leave(pcache_g.mutex)
 
#define pcacheMutexHeld (  )     sqlite3_mutex_held(pcache_g.mutex)

Typedef Documentation

typedef struct PgFreeslot PgFreeslot

Definition at line 62 of file pcache.c.


Function Documentation

static void pcacheAddToHash ( PgHdr pPage  )  [static]
static void pcacheAddToList ( PgHdr **  ppHead,
PgHdr pPage 
) [static]
static void pcacheAddToLruList ( PgHdr pPage  )  [static]
static void pcacheClear ( PCache pCache  )  [static]
static void pcacheEnforceMaxPage ( void   )  [static]
static void pcacheFree ( void *  p  )  [static]
static void pcacheMakeClean ( PgHdr p  )  [static]
static void* pcacheMalloc ( int  sz,
PCache pCache 
) [static]
static PgHdr* pcacheMergeDirtyList ( PgHdr pA,
PgHdr pB 
) [static]

Definition at line 997 of file pcache.c.

References PgHdr::pDirty, and PgHdr::pgno.

Referenced by pcacheSortDirtyList().

static PgHdr* pcachePageAlloc ( PCache pCache  )  [static]
static void pcachePageFree ( PgHdr p  )  [static]
static int pcacheRecycleOrAlloc ( PCache pCache,
PgHdr **  ppPage 
) [static]
static PgHdr* pcacheRecyclePage ( void   )  [static]
static void pcacheRemoveFromHash ( PgHdr pPage  )  [static]
static void pcacheRemoveFromList ( PgHdr **  ppHead,
PgHdr pPage 
) [static]
static void pcacheRemoveFromLruList ( PgHdr pPage  )  [static]
static int pcacheResizeHash ( PCache pCache,
int  nHash 
) [static]
static PgHdr* pcacheSortDirtyList ( PgHdr pIn  )  [static]

Definition at line 1034 of file pcache.c.

References N_SORT_BUCKET, N_SORT_BUCKET_ALLOC, pcacheMergeDirtyList(), and PgHdr::pDirty.

Referenced by sqlite3PcacheDirtyList().

void sqlite3PageFree ( void *  p  ) 
void* sqlite3PageMalloc ( int  sz  ) 
void sqlite3PCacheBufferSetup ( void *  pBuf,
int  sz,
int  n 
)

Definition at line 388 of file pcache.c.

References pcache_g, and PgFreeslot::pNext.

Referenced by sqlite3_initialize().

void sqlite3PcacheCleanAll ( PCache pCache  ) 
int sqlite3PcacheClear ( PCache pCache  ) 

Definition at line 985 of file pcache.c.

References PCache::nRef, pcacheClear(), pcacheEnterMutex, pcacheExitMutex, and SQLITE_OK.

Referenced by pager_reset().

void sqlite3PcacheClearFlags ( PCache pCache,
int  mask 
)
void sqlite3PcacheClose ( PCache pCache  ) 
PgHdr* sqlite3PcacheDirtyList ( PCache pCache  ) 

Definition at line 1070 of file pcache.c.

References pcacheSortDirtyList(), PgHdr::pDirty, PCache::pDirty, and PgHdr::pNext.

Referenced by sqlite3PagerCommitPhaseOne().

void sqlite3PcacheDrop ( PgHdr p  ) 
int sqlite3PcacheFetch ( PCache pCache,
Pgno  pgno,
int  createFlag,
PgHdr **  ppPage 
)
int sqlite3PcacheGetCachesize ( PCache pCache  ) 

Definition at line 1144 of file pcache.c.

References PCache::nMax.

int sqlite3PcacheInitialize ( void   ) 
void sqlite3PcacheMakeClean ( PgHdr p  ) 

Definition at line 827 of file pcache.c.

References PgHdr::flags, pcacheEnterMutex, pcacheExitMutex, pcacheMakeClean(), and PGHDR_DIRTY.

Referenced by makeClean(), and pagerStress().

void sqlite3PcacheMakeDirty ( PgHdr p  ) 
void sqlite3PcacheMove ( PgHdr p,
Pgno  newPgno 
)
void sqlite3PcacheOpen ( int  szPage,
int  szExtra,
int  bPurgeable,
int(*)(void *, PgHdr *)  xStress,
void *  pStress,
PCache p 
)
int sqlite3PcachePagecount ( PCache pCache  ) 

Definition at line 1092 of file pcache.c.

References PCache::nPage.

Referenced by pagerSharedLock().

int sqlite3PcachePageRefcount ( PgHdr p  ) 

Definition at line 1085 of file pcache.c.

References PgHdr::nRef.

Referenced by sqlite3PagerPageRefcount().

void sqlite3PcacheRef ( PgHdr p  ) 

Definition at line 768 of file pcache.c.

References PgHdr::nRef.

Referenced by sqlite3PagerRef().

int sqlite3PcacheRefCount ( PCache pCache  ) 
void sqlite3PcacheRelease ( PgHdr p  ) 
void sqlite3PcacheSetCachesize ( PCache pCache,
int  mxPage 
)
void sqlite3PcacheSetPageSize ( PCache pCache,
int  szPage 
)

Definition at line 668 of file pcache.c.

References PCache::nPage, and PCache::szPage.

Referenced by sqlite3PagerSetPagesize().

void sqlite3PcacheShutdown ( void   ) 

Definition at line 624 of file pcache.c.

References pcache, and pcache_g.

Referenced by sqlite3_shutdown().

int sqlite3PcacheSize ( void   ) 

Definition at line 631 of file pcache.c.

Referenced by sqlite3PagerOpen().

void sqlite3PcacheTruncate ( PCache pCache,
Pgno  pgno 
)

Variable Documentation

SQLITE_WSD struct PCacheGlobal pcache [static]

ContextLogger2—ContextLogger2 Logger Daemon Internals—Generated on Mon May 2 13:50:01 2011 by Doxygen 1.6.1