aboutsummaryrefslogtreecommitdiff
path: root/src/os_common.h
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2004-05-22 17:41:58 +0000
committerdrh <drh@noemail.net>2004-05-22 17:41:58 +0000
commitbbd42a6dda2d0b579d22b846c79a765ebc80bec9 (patch)
tree9d2cebb557e78c0ce35797d8f49bcca798039058 /src/os_common.h
parent60ca804396e6e94323f6293d2796f856dc6acba6 (diff)
downloadsqlite-bbd42a6dda2d0b579d22b846c79a765ebc80bec9.tar.gz
sqlite-bbd42a6dda2d0b579d22b846c79a765ebc80bec9.zip
Split up os.c into separate files, one for each platform. (CVS 1441)
FossilOrigin-Name: 5c61be1c47ac960fba2a642e69a98436ce1cd725
Diffstat (limited to 'src/os_common.h')
-rw-r--r--src/os_common.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/os_common.h b/src/os_common.h
new file mode 100644
index 000000000..70d0dd9d9
--- /dev/null
+++ b/src/os_common.h
@@ -0,0 +1,82 @@
+/*
+** 2004 May 22
+**
+** 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 contains macros and a little bit of code that is common to
+** all of the platform-specific files (os_*.c) and is #included into those
+** files.
+**
+** This file should be #included by the os_*.c files only. It is not a
+** general purpose header file.
+*/
+
+
+/*
+** Macros for performance tracing. Normally turned off. Only works
+** on i486 hardware.
+*/
+#if 0
+static int last_page = 0;
+__inline__ unsigned long long int hwtime(void){
+ unsigned long long int x;
+ __asm__("rdtsc\n\t"
+ "mov %%edx, %%ecx\n\t"
+ :"=A" (x));
+ return x;
+}
+static unsigned long long int g_start;
+static unsigned int elapse;
+#define TIMER_START g_start=hwtime()
+#define TIMER_END elapse=hwtime()-g_start
+#define SEEK(X) last_page=(X)
+#define TRACE1(X) fprintf(stderr,X)
+#define TRACE2(X,Y) fprintf(stderr,X,Y)
+#define TRACE3(X,Y,Z) fprintf(stderr,X,Y,Z)
+#define TRACE4(X,Y,Z,A) fprintf(stderr,X,Y,Z,A)
+#define TRACE5(X,Y,Z,A,B) fprintf(stderr,X,Y,Z,A,B)
+#else
+#define TIMER_START
+#define TIMER_END
+#define SEEK(X)
+#define TRACE1(X)
+#define TRACE2(X,Y)
+#define TRACE3(X,Y,Z)
+#define TRACE4(X,Y,Z,A)
+#define TRACE5(X,Y,Z,A,B)
+#endif
+
+
+/*
+** If we compile with the SQLITE_TEST macro set, then the following block
+** of code will give us the ability to simulate a disk I/O error. This
+** is used for testing the I/O recovery logic.
+*/
+#ifdef SQLITE_TEST
+int sqlite3_io_error_pending = 0;
+#define SimulateIOError(A) \
+ if( sqlite3_io_error_pending ) \
+ if( sqlite3_io_error_pending-- == 1 ){ local_ioerr(); return A; }
+static void local_ioerr(){
+ sqlite3_io_error_pending = 0; /* Really just a place to set a breakpoint */
+}
+#else
+#define SimulateIOError(A)
+#endif
+
+/*
+** When testing, keep a count of the number of open files.
+*/
+#ifdef SQLITE_TEST
+int sqlite3_open_file_count = 0;
+#define OpenCounter(X) sqlite3_open_file_count+=(X)
+#else
+#define OpenCounter(X)
+#endif