engine/sqlite/src/mutex.h
changeset 2 29cda98b007e
equal deleted inserted replaced
1:5f8e5adbbed9 2:29cda98b007e
       
     1 /*
       
     2 ** 2007 August 28
       
     3 **
       
     4 ** The author disclaims copyright to this source code.  In place of
       
     5 ** a legal notice, here is a blessing:
       
     6 **
       
     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.
       
    10 **
       
    11 *************************************************************************
       
    12 **
       
    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
       
    16 ** better organized.
       
    17 **
       
    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.
       
    21 **
       
    22 ** $Id: mutex.h 1282 2008-11-13 09:31:33Z LarsPson $
       
    23 */
       
    24 
       
    25 
       
    26 #ifdef SQLITE_MUTEX_APPDEF
       
    27 /*
       
    28 ** If SQLITE_MUTEX_APPDEF is defined, then this whole module is
       
    29 ** omitted and equivalent functionality must be provided by the
       
    30 ** application that links against the SQLite library.
       
    31 */
       
    32 #else
       
    33 /*
       
    34 ** Figure out what version of the code to use.  The choices are
       
    35 **
       
    36 **   SQLITE_MUTEX_NOOP         For single-threaded applications that
       
    37 **                             do not desire error checking.
       
    38 **
       
    39 **   SQLITE_MUTEX_NOOP_DEBUG   For single-threaded applications with
       
    40 **                             error checking to help verify that mutexes
       
    41 **                             are being used correctly even though they
       
    42 **                             are not needed.  Used when SQLITE_DEBUG is
       
    43 **                             defined on single-threaded builds.
       
    44 **
       
    45 **   SQLITE_MUTEX_PTHREADS     For multi-threaded applications on Unix.
       
    46 **
       
    47 **   SQLITE_MUTEX_W32          For multi-threaded applications on Win32.
       
    48 **
       
    49 **   SQLITE_MUTEX_OS2          For multi-threaded applications on OS/2.
       
    50 */
       
    51 #define SQLITE_MUTEX_NOOP 1   /* The default */
       
    52 #if defined(SQLITE_DEBUG) && !SQLITE_THREADSAFE
       
    53 # undef SQLITE_MUTEX_NOOP
       
    54 # define SQLITE_MUTEX_NOOP_DEBUG
       
    55 #endif
       
    56 #if defined(SQLITE_MUTEX_NOOP) && SQLITE_THREADSAFE && OS_UNIX
       
    57 # undef SQLITE_MUTEX_NOOP
       
    58 # define SQLITE_MUTEX_PTHREADS
       
    59 #endif
       
    60 #if defined(SQLITE_MUTEX_NOOP) && SQLITE_THREADSAFE && OS_WIN
       
    61 # undef SQLITE_MUTEX_NOOP
       
    62 # define SQLITE_MUTEX_W32
       
    63 #endif
       
    64 #if defined(SQLITE_MUTEX_NOOP) && SQLITE_THREADSAFE && OS_OS2
       
    65 # undef SQLITE_MUTEX_NOOP
       
    66 # define SQLITE_MUTEX_OS2
       
    67 #endif
       
    68 
       
    69 #ifdef SQLITE_MUTEX_NOOP
       
    70 /*
       
    71 ** If this is a no-op implementation, implement everything as macros.
       
    72 */
       
    73 #define sqlite3_mutex_alloc(X)    ((sqlite3_mutex*)8)
       
    74 #define sqlite3_mutex_free(X)
       
    75 #define sqlite3_mutex_enter(X)
       
    76 #define sqlite3_mutex_try(X)      SQLITE_OK
       
    77 #define sqlite3_mutex_leave(X)
       
    78 #define sqlite3_mutex_held(X)     1
       
    79 #define sqlite3_mutex_notheld(X)  1
       
    80 #endif
       
    81 
       
    82 #endif /* SQLITE_MUTEX_APPDEF */