4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
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.
11 *************************************************************************
13 ** This file contains the common header for all mutex implementations.
14 ** The sqliteInt.h header #includes this file so that it is available
15 ** to all source files. We break it out in an effort to keep the code
18 ** NOTE: source files should *not* #include this header file directly.
19 ** Source files should #include the sqliteInt.h file and let that file
20 ** include this one indirectly.
25 ** Figure out what version of the code to use. The choices are
27 ** SQLITE_MUTEX_OMIT No mutex logic. Not even stubs. The
28 ** mutexes implemention cannot be overridden
31 ** SQLITE_MUTEX_NOOP For single-threaded applications. No
32 ** mutual exclusion is provided. But this
33 ** implementation can be overridden at
36 ** SQLITE_MUTEX_PTHREADS For multi-threaded applications on Unix.
38 ** SQLITE_MUTEX_W32 For multi-threaded applications on Win32.
40 ** SQLITE_MUTEX_OS2 For multi-threaded applications on OS/2.
42 #if !SQLITE_THREADSAFE
43 # define SQLITE_MUTEX_OMIT
45 #if SQLITE_THREADSAFE && !defined(SQLITE_MUTEX_NOOP)
47 # define SQLITE_MUTEX_PTHREADS
49 # define SQLITE_MUTEX_W32
51 # define SQLITE_MUTEX_OS2
53 # define SQLITE_MUTEX_NOOP
57 #ifdef SQLITE_MUTEX_OMIT
59 ** If this is a no-op implementation, implement everything as macros.
61 #define sqlite3_mutex_alloc(X) ((sqlite3_mutex*)8)
62 #define sqlite3_mutex_free(X)
63 #define sqlite3_mutex_enter(X)
64 #define sqlite3_mutex_try(X) SQLITE_OK
65 #define sqlite3_mutex_leave(X)
66 #define sqlite3_mutex_held(X) ((void)(X),1)
67 #define sqlite3_mutex_notheld(X) ((void)(X),1)
68 #define sqlite3MutexAlloc(X) ((sqlite3_mutex*)8)
69 #define sqlite3MutexInit() SQLITE_OK
70 #define sqlite3MutexEnd()
71 #define MUTEX_LOGIC(X)
73 #define MUTEX_LOGIC(X) X
74 #endif /* defined(SQLITE_MUTEX_OMIT) */