annotate sqlite/os_common.h @ 1434:b6b61becdf4e trunk

[svn] - add sqlite/ directory
author nenolod
date Thu, 27 Jul 2006 22:41:31 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1434
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
1 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
2 ** 2004 May 22
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
3 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
4 ** The author disclaims copyright to this source code. In place of
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
5 ** a legal notice, here is a blessing:
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
6 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
7 ** May you do good and not evil.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
8 ** May you find forgiveness for yourself and forgive others.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
9 ** May you share freely, never taking more than you give.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
10 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
11 ******************************************************************************
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
12 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
13 ** This file contains macros and a little bit of code that is common to
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
14 ** all of the platform-specific files (os_*.c) and is #included into those
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
15 ** files.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
16 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
17 ** This file should be #included by the os_*.c files only. It is not a
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
18 ** general purpose header file.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
19 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
20
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
21 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
22 ** At least two bugs have slipped in because we changed the MEMORY_DEBUG
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
23 ** macro to SQLITE_DEBUG and some older makefiles have not yet made the
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
24 ** switch. The following code should catch this problem at compile-time.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
25 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
26 #ifdef MEMORY_DEBUG
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
27 # error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
28 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
29
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
30
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
31 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
32 * When testing, this global variable stores the location of the
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
33 * pending-byte in the database file.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
34 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
35 #ifdef SQLITE_TEST
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
36 unsigned int sqlite3_pending_byte = 0x40000000;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
37 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
38
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
39 int sqlite3_os_trace = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
40 #ifdef SQLITE_DEBUG
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
41 static int last_page = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
42 #define SEEK(X) last_page=(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
43 #define TRACE1(X) if( sqlite3_os_trace ) sqlite3DebugPrintf(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
44 #define TRACE2(X,Y) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
45 #define TRACE3(X,Y,Z) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
46 #define TRACE4(X,Y,Z,A) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
47 #define TRACE5(X,Y,Z,A,B) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A,B)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
48 #define TRACE6(X,Y,Z,A,B,C) if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
49 #define TRACE7(X,Y,Z,A,B,C,D) \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
50 if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C,D)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
51 #else
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
52 #define SEEK(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
53 #define TRACE1(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
54 #define TRACE2(X,Y)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
55 #define TRACE3(X,Y,Z)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
56 #define TRACE4(X,Y,Z,A)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
57 #define TRACE5(X,Y,Z,A,B)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
58 #define TRACE6(X,Y,Z,A,B,C)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
59 #define TRACE7(X,Y,Z,A,B,C,D)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
60 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
61
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
62 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
63 ** Macros for performance tracing. Normally turned off. Only works
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
64 ** on i486 hardware.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
65 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
66 #ifdef SQLITE_PERFORMANCE_TRACE
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
67 __inline__ unsigned long long int hwtime(void){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
68 unsigned long long int x;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
69 __asm__("rdtsc\n\t"
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
70 "mov %%edx, %%ecx\n\t"
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
71 :"=A" (x));
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
72 return x;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
73 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
74 static unsigned long long int g_start;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
75 static unsigned int elapse;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
76 #define TIMER_START g_start=hwtime()
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
77 #define TIMER_END elapse=hwtime()-g_start
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
78 #define TIMER_ELAPSED elapse
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
79 #else
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
80 #define TIMER_START
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
81 #define TIMER_END
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
82 #define TIMER_ELAPSED 0
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
83 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
84
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
85 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
86 ** If we compile with the SQLITE_TEST macro set, then the following block
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
87 ** of code will give us the ability to simulate a disk I/O error. This
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
88 ** is used for testing the I/O recovery logic.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
89 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
90 #ifdef SQLITE_TEST
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
91 int sqlite3_io_error_hit = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
92 int sqlite3_io_error_pending = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
93 int sqlite3_diskfull_pending = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
94 int sqlite3_diskfull = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
95 #define SimulateIOError(A) \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
96 if( sqlite3_io_error_pending ) \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
97 if( sqlite3_io_error_pending-- == 1 ){ local_ioerr(); return A; }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
98 static void local_ioerr(){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
99 sqlite3_io_error_hit = 1; /* Really just a place to set a breakpoint */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
100 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
101 #define SimulateDiskfullError \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
102 if( sqlite3_diskfull_pending ){ \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
103 if( sqlite3_diskfull_pending == 1 ){ \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
104 local_ioerr(); \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
105 sqlite3_diskfull = 1; \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
106 return SQLITE_FULL; \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
107 }else{ \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
108 sqlite3_diskfull_pending--; \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
109 } \
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
110 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
111 #else
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
112 #define SimulateIOError(A)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
113 #define SimulateDiskfullError
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
114 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
115
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
116 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
117 ** When testing, keep a count of the number of open files.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
118 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
119 #ifdef SQLITE_TEST
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
120 int sqlite3_open_file_count = 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
121 #define OpenCounter(X) sqlite3_open_file_count+=(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
122 #else
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
123 #define OpenCounter(X)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
124 #endif
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
125
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
126 /*
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
127 ** sqlite3GenericMalloc
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
128 ** sqlite3GenericRealloc
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
129 ** sqlite3GenericOsFree
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
130 ** sqlite3GenericAllocationSize
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
131 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
132 ** Implementation of the os level dynamic memory allocation interface in terms
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
133 ** of the standard malloc(), realloc() and free() found in many operating
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
134 ** systems. No rocket science here.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
135 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
136 ** There are two versions of these four functions here. The version
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
137 ** implemented here is only used if memory-management or memory-debugging is
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
138 ** enabled. This version allocates an extra 8-bytes at the beginning of each
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
139 ** block and stores the size of the allocation there.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
140 **
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
141 ** If neither memory-management or debugging is enabled, the second
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
142 ** set of implementations is used instead.
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
143 */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
144 #if defined(SQLITE_ENABLE_MEMORY_MANAGEMENT) || defined (SQLITE_MEMDEBUG)
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
145 void *sqlite3GenericMalloc(int n){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
146 char *p = (char *)malloc(n+8);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
147 assert(n>0);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
148 assert(sizeof(int)<=8);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
149 if( p ){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
150 *(int *)p = n;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
151 p += 8;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
152 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
153 return (void *)p;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
154 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
155 void *sqlite3GenericRealloc(void *p, int n){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
156 char *p2 = ((char *)p - 8);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
157 assert(n>0);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
158 p2 = (char*)realloc(p2, n+8);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
159 if( p2 ){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
160 *(int *)p2 = n;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
161 p2 += 8;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
162 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
163 return (void *)p2;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
164 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
165 void sqlite3GenericFree(void *p){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
166 assert(p);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
167 free((void *)((char *)p - 8));
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
168 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
169 int sqlite3GenericAllocationSize(void *p){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
170 return p ? *(int *)((char *)p - 8) : 0;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
171 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
172 #else
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
173 void *sqlite3GenericMalloc(int n){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
174 char *p = (char *)malloc(n);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
175 return (void *)p;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
176 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
177 void *sqlite3GenericRealloc(void *p, int n){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
178 assert(n>0);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
179 p = realloc(p, n);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
180 return p;
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
181 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
182 void sqlite3GenericFree(void *p){
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
183 assert(p);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
184 free(p);
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
185 }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
186 /* Never actually used, but needed for the linker */
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
187 int sqlite3GenericAllocationSize(void *p){ return 0; }
b6b61becdf4e [svn] - add sqlite/ directory
nenolod
parents:
diff changeset
188 #endif