Initial import of Scalos. To decrease size I have
[AROS-Contrib.git] / scalos / libraries / sqlite / src / mutex.h
blobb0e552c7c466b0a86fca1a5e426df9f5fd9b3161
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.
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
16 ** better organized.
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
29 ** at start-time.
31 ** SQLITE_MUTEX_NOOP For single-threaded applications. No
32 ** mutual exclusion is provided. But this
33 ** implementation can be overridden at
34 ** start-time.
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
44 #endif
45 #if SQLITE_THREADSAFE && !defined(SQLITE_MUTEX_NOOP)
46 # if SQLITE_OS_UNIX
47 # define SQLITE_MUTEX_PTHREADS
48 # elif SQLITE_OS_WIN
49 # define SQLITE_MUTEX_W32
50 # elif SQLITE_OS_OS2
51 # define SQLITE_MUTEX_OS2
52 # else
53 # define SQLITE_MUTEX_NOOP
54 # endif
55 #endif
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)
72 #else
73 #define MUTEX_LOGIC(X) X
74 #endif /* defined(SQLITE_MUTEX_OMIT) */