persistentstorage/sql/SQLite364/mutex.h
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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,v 1.9 2008/10/07 15:25:48 drh Exp $
       
    23 */
       
    24 
       
    25 
       
    26 /*
       
    27 ** Figure out what version of the code to use.  The choices are
       
    28 **
       
    29 **   SQLITE_MUTEX_OMIT         No mutex logic.  Not even stubs.  The
       
    30 **                             mutexes implemention cannot be overridden
       
    31 **                             at start-time.
       
    32 **
       
    33 **   SQLITE_MUTEX_NOOP         For single-threaded applications.  No
       
    34 **                             mutual exclusion is provided.  But this
       
    35 **                             implementation can be overridden at
       
    36 **                             start-time.
       
    37 **
       
    38 **   SQLITE_MUTEX_PTHREADS     For multi-threaded applications on Unix.
       
    39 **
       
    40 **   SQLITE_MUTEX_W32          For multi-threaded applications on Win32.
       
    41 **
       
    42 **   SQLITE_MUTEX_OS2          For multi-threaded applications on OS/2.
       
    43 */
       
    44 #if !SQLITE_THREADSAFE
       
    45 # define SQLITE_MUTEX_OMIT
       
    46 #endif
       
    47 #if SQLITE_THREADSAFE && !defined(SQLITE_MUTEX_NOOP)
       
    48 #  if SQLITE_OS_UNIX
       
    49 #    define SQLITE_MUTEX_PTHREADS
       
    50 #  elif SQLITE_OS_WIN
       
    51 #    define SQLITE_MUTEX_W32
       
    52 #  elif SQLITE_OS_OS2
       
    53 #    define SQLITE_MUTEX_OS2
       
    54 #  else
       
    55 #    define SQLITE_MUTEX_NOOP
       
    56 #  endif
       
    57 #endif
       
    58 
       
    59 #ifdef SQLITE_MUTEX_OMIT
       
    60 /*
       
    61 ** If this is a no-op implementation, implement everything as macros.
       
    62 */
       
    63 #define sqlite3_mutex_alloc(X)    ((sqlite3_mutex*)8)
       
    64 #define sqlite3_mutex_free(X)
       
    65 #define sqlite3_mutex_enter(X)
       
    66 #define sqlite3_mutex_try(X)      SQLITE_OK
       
    67 #define sqlite3_mutex_leave(X)
       
    68 #define sqlite3_mutex_held(X)     1
       
    69 #define sqlite3_mutex_notheld(X)  1
       
    70 #define sqlite3MutexAlloc(X)      ((sqlite3_mutex*)8)
       
    71 #define sqlite3MutexInit()        SQLITE_OK
       
    72 #define sqlite3MutexEnd()
       
    73 #endif /* defined(SQLITE_OMIT_MUTEX) */