| Index: third_party/sqlite/src/src/os_common.h
|
| diff --git a/third_party/sqlite/src/src/os_common.h b/third_party/sqlite/src/src/os_common.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..eba856be8adab39dca61d1c70eae74016da3212e
|
| --- /dev/null
|
| +++ b/third_party/sqlite/src/src/os_common.h
|
| @@ -0,0 +1,112 @@
|
| +/*
|
| +** 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.
|
| +*/
|
| +#ifndef _OS_COMMON_H_
|
| +#define _OS_COMMON_H_
|
| +
|
| +/*
|
| +** At least two bugs have slipped in because we changed the MEMORY_DEBUG
|
| +** macro to SQLITE_DEBUG and some older makefiles have not yet made the
|
| +** switch. The following code should catch this problem at compile-time.
|
| +*/
|
| +#ifdef MEMORY_DEBUG
|
| +# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
|
| +#endif
|
| +
|
| +#ifdef SQLITE_DEBUG
|
| +int sqlite3OSTrace = 0;
|
| +#define OSTRACE(X) if( sqlite3OSTrace ) sqlite3DebugPrintf X
|
| +#else
|
| +#define OSTRACE(X)
|
| +#endif
|
| +
|
| +/*
|
| +** Macros for performance tracing. Normally turned off. Only works
|
| +** on i486 hardware.
|
| +*/
|
| +#ifdef SQLITE_PERFORMANCE_TRACE
|
| +
|
| +/*
|
| +** hwtime.h contains inline assembler code for implementing
|
| +** high-performance timing routines.
|
| +*/
|
| +#include "hwtime.h"
|
| +
|
| +static sqlite_uint64 g_start;
|
| +static sqlite_uint64 g_elapsed;
|
| +#define TIMER_START g_start=sqlite3Hwtime()
|
| +#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start
|
| +#define TIMER_ELAPSED g_elapsed
|
| +#else
|
| +#define TIMER_START
|
| +#define TIMER_END
|
| +#define TIMER_ELAPSED ((sqlite_uint64)0)
|
| +#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_hit = 0; /* Total number of I/O Errors */
|
| +int sqlite3_io_error_hardhit = 0; /* Number of non-benign errors */
|
| +int sqlite3_io_error_pending = 0; /* Count down to first I/O error */
|
| +int sqlite3_io_error_persist = 0; /* True if I/O errors persist */
|
| +int sqlite3_io_error_benign = 0; /* True if errors are benign */
|
| +int sqlite3_diskfull_pending = 0;
|
| +int sqlite3_diskfull = 0;
|
| +#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)
|
| +#define SimulateIOError(CODE) \
|
| + if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \
|
| + || sqlite3_io_error_pending-- == 1 ) \
|
| + { local_ioerr(); CODE; }
|
| +static void local_ioerr(){
|
| + IOTRACE(("IOERR\n"));
|
| + sqlite3_io_error_hit++;
|
| + if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
|
| +}
|
| +#define SimulateDiskfullError(CODE) \
|
| + if( sqlite3_diskfull_pending ){ \
|
| + if( sqlite3_diskfull_pending == 1 ){ \
|
| + local_ioerr(); \
|
| + sqlite3_diskfull = 1; \
|
| + sqlite3_io_error_hit = 1; \
|
| + CODE; \
|
| + }else{ \
|
| + sqlite3_diskfull_pending--; \
|
| + } \
|
| + }
|
| +#else
|
| +#define SimulateIOErrorBenign(X)
|
| +#define SimulateIOError(A)
|
| +#define SimulateDiskfullError(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
|
| +
|
| +#endif /* !defined(_OS_COMMON_H_) */
|
|
|