1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- ** 2007 August 28
- **
- ** 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 the common header for all mutex implementations.
- ** The sqliteInt.h header #includes this file so that it is available
- ** to all source files. We break it out in an effort to keep the code
- ** better organized.
- **
- ** NOTE: source files should *not* #include this header file directly.
- ** Source files should #include the sqliteInt.h file and let that file
- ** include this one indirectly.
- */
- /*
- ** Figure out what version of the code to use. The choices are
- **
- ** SQLITE_MUTEX_OMIT No mutex logic. Not even stubs. The
- ** mutexes implemention cannot be overridden
- ** at start-time.
- **
- ** SQLITE_MUTEX_NOOP For single-threaded applications. No
- ** mutual exclusion is provided. But this
- ** implementation can be overridden at
- ** start-time.
- **
- ** SQLITE_MUTEX_RTTHREAD For multi-threaded applications on rt-thread.
- **
- ** SQLITE_MUTEX_PTHREADS For multi-threaded applications on Unix.
- **
- ** SQLITE_MUTEX_W32 For multi-threaded applications on Win32.
- */
- #if !SQLITE_THREADSAFE
- # define SQLITE_MUTEX_OMIT
- #endif
- #if SQLITE_THREADSAFE && !defined(SQLITE_MUTEX_NOOP)
- # if SQLITE_OS_UNIX
- # define SQLITE_MUTEX_PTHREADS
- # elif SQLITE_OS_WIN
- # define SQLITE_MUTEX_W32
- # elif SQLITE_OS_RTTHREAD
- # define SQLITE_MUTEX_RTTHREAD
- # else
- # define SQLITE_MUTEX_NOOP
- # endif
- #endif
- #ifdef SQLITE_MUTEX_OMIT
- /*
- ** If this is a no-op implementation, implement everything as macros.
- */
- #define sqlite3_mutex_alloc(X) ((sqlite3_mutex*)8)
- #define sqlite3_mutex_free(X)
- #define sqlite3_mutex_enter(X)
- #define sqlite3_mutex_try(X) SQLITE_OK
- #define sqlite3_mutex_leave(X)
- #define sqlite3_mutex_held(X) ((void)(X),1)
- #define sqlite3_mutex_notheld(X) ((void)(X),1)
- #define sqlite3MutexAlloc(X) ((sqlite3_mutex*)8)
- #define sqlite3MutexInit() SQLITE_OK
- #define sqlite3MutexEnd()
- #define MUTEX_LOGIC(X)
- #else
- #define MUTEX_LOGIC(X) X
- #endif /* defined(SQLITE_MUTEX_OMIT) */
|