Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: third_party/sqlite/src/pcache.h

Issue 3108030: Move bundled copy of sqlite one level deeper to better separate it... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/parse.y ('k') | third_party/sqlite/src/pcache.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 ** 2008 August 05
3 **
4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
6 **
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
10 **
11 *************************************************************************
12 ** This header file defines the interface that the sqlite page cache
13 ** subsystem.
14 **
15 ** @(#) $Id: pcache.h,v 1.20 2009/07/25 11:46:49 danielk1977 Exp $
16 */
17
18 #ifndef _PCACHE_H_
19
20 typedef struct PgHdr PgHdr;
21 typedef struct PCache PCache;
22
23 /*
24 ** Every page in the cache is controlled by an instance of the following
25 ** structure.
26 */
27 struct PgHdr {
28 void *pData; /* Content of this page */
29 void *pExtra; /* Extra content */
30 PgHdr *pDirty; /* Transient list of dirty pages */
31 Pgno pgno; /* Page number for this page */
32 Pager *pPager; /* The pager this page is part of */
33 #ifdef SQLITE_CHECK_PAGES
34 u32 pageHash; /* Hash of page content */
35 #endif
36 u16 flags; /* PGHDR flags defined below */
37
38 /**********************************************************************
39 ** Elements above are public. All that follows is private to pcache.c
40 ** and should not be accessed by other modules.
41 */
42 i16 nRef; /* Number of users of this page */
43 PCache *pCache; /* Cache that owns this page */
44
45 PgHdr *pDirtyNext; /* Next element in list of dirty pages */
46 PgHdr *pDirtyPrev; /* Previous element in list of dirty pages */
47 };
48
49 /* Bit values for PgHdr.flags */
50 #define PGHDR_DIRTY 0x002 /* Page has changed */
51 #define PGHDR_NEED_SYNC 0x004 /* Fsync the rollback journal before
52 ** writing this page to the database */
53 #define PGHDR_NEED_READ 0x008 /* Content is unread */
54 #define PGHDR_REUSE_UNLIKELY 0x010 /* A hint that reuse is unlikely */
55 #define PGHDR_DONT_WRITE 0x020 /* Do not write content to disk */
56
57 /* Initialize and shutdown the page cache subsystem */
58 int sqlite3PcacheInitialize(void);
59 void sqlite3PcacheShutdown(void);
60
61 /* Page cache buffer management:
62 ** These routines implement SQLITE_CONFIG_PAGECACHE.
63 */
64 void sqlite3PCacheBufferSetup(void *, int sz, int n);
65
66 /* Create a new pager cache.
67 ** Under memory stress, invoke xStress to try to make pages clean.
68 ** Only clean and unpinned pages can be reclaimed.
69 */
70 void sqlite3PcacheOpen(
71 int szPage, /* Size of every page */
72 int szExtra, /* Extra space associated with each page */
73 int bPurgeable, /* True if pages are on backing store */
74 int (*xStress)(void*, PgHdr*), /* Call to try to make pages clean */
75 void *pStress, /* Argument to xStress */
76 PCache *pToInit /* Preallocated space for the PCache */
77 );
78
79 /* Modify the page-size after the cache has been created. */
80 void sqlite3PcacheSetPageSize(PCache *, int);
81
82 /* Return the size in bytes of a PCache object. Used to preallocate
83 ** storage space.
84 */
85 int sqlite3PcacheSize(void);
86
87 /* One release per successful fetch. Page is pinned until released.
88 ** Reference counted.
89 */
90 int sqlite3PcacheFetch(PCache*, Pgno, int createFlag, PgHdr**);
91 void sqlite3PcacheRelease(PgHdr*);
92
93 void sqlite3PcacheDrop(PgHdr*); /* Remove page from cache */
94 void sqlite3PcacheMakeDirty(PgHdr*); /* Make sure page is marked dirty */
95 void sqlite3PcacheMakeClean(PgHdr*); /* Mark a single page as clean */
96 void sqlite3PcacheCleanAll(PCache*); /* Mark all dirty list pages as clean */
97
98 /* Change a page number. Used by incr-vacuum. */
99 void sqlite3PcacheMove(PgHdr*, Pgno);
100
101 /* Remove all pages with pgno>x. Reset the cache if x==0 */
102 void sqlite3PcacheTruncate(PCache*, Pgno x);
103
104 /* Get a list of all dirty pages in the cache, sorted by page number */
105 PgHdr *sqlite3PcacheDirtyList(PCache*);
106
107 /* Reset and close the cache object */
108 void sqlite3PcacheClose(PCache*);
109
110 /* Clear flags from pages of the page cache */
111 void sqlite3PcacheClearSyncFlags(PCache *);
112
113 /* Discard the contents of the cache */
114 void sqlite3PcacheClear(PCache*);
115
116 /* Return the total number of outstanding page references */
117 int sqlite3PcacheRefCount(PCache*);
118
119 /* Increment the reference count of an existing page */
120 void sqlite3PcacheRef(PgHdr*);
121
122 int sqlite3PcachePageRefcount(PgHdr*);
123
124 /* Return the total number of pages stored in the cache */
125 int sqlite3PcachePagecount(PCache*);
126
127 #if defined(SQLITE_CHECK_PAGES) || defined(SQLITE_DEBUG)
128 /* Iterate through all dirty pages currently stored in the cache. This
129 ** interface is only available if SQLITE_CHECK_PAGES is defined when the
130 ** library is built.
131 */
132 void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHdr *));
133 #endif
134
135 /* Set and get the suggested cache-size for the specified pager-cache.
136 **
137 ** If no global maximum is configured, then the system attempts to limit
138 ** the total number of pages cached by purgeable pager-caches to the sum
139 ** of the suggested cache-sizes.
140 */
141 void sqlite3PcacheSetCachesize(PCache *, int);
142 int sqlite3PcacheGetCachesize(PCache *);
143
144 #ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
145 /* Try to return memory used by the pcache module to the main memory heap */
146 int sqlite3PcacheReleaseMemory(int);
147 #endif
148
149 #ifdef SQLITE_TEST
150 void sqlite3PcacheStats(int*,int*,int*,int*);
151 #endif
152
153 void sqlite3PCacheSetDefault(void);
154
155 #endif /* _PCACHE_H_ */
OLDNEW
« no previous file with comments | « third_party/sqlite/src/parse.y ('k') | third_party/sqlite/src/pcache.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698