| Index: third_party/sqlite/src/mutex_noop.c
|
| ===================================================================
|
| --- third_party/sqlite/src/mutex_noop.c (revision 56608)
|
| +++ third_party/sqlite/src/mutex_noop.c (working copy)
|
| @@ -1,186 +0,0 @@
|
| -/*
|
| -** 2008 October 07
|
| -**
|
| -** 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 C functions that implement mutexes.
|
| -**
|
| -** This implementation in this file does not provide any mutual
|
| -** exclusion and is thus suitable for use only in applications
|
| -** that use SQLite in a single thread. The routines defined
|
| -** here are place-holders. Applications can substitute working
|
| -** mutex routines at start-time using the
|
| -**
|
| -** sqlite3_config(SQLITE_CONFIG_MUTEX,...)
|
| -**
|
| -** interface.
|
| -**
|
| -** If compiled with SQLITE_DEBUG, then additional logic is inserted
|
| -** that does error checking on mutexes to make sure they are being
|
| -** called correctly.
|
| -**
|
| -** $Id: mutex_noop.c,v 1.3 2008/12/05 17:17:08 drh Exp $
|
| -*/
|
| -#include "sqliteInt.h"
|
| -
|
| -
|
| -#if defined(SQLITE_MUTEX_NOOP) && !defined(SQLITE_DEBUG)
|
| -/*
|
| -** Stub routines for all mutex methods.
|
| -**
|
| -** This routines provide no mutual exclusion or error checking.
|
| -*/
|
| -static int noopMutexHeld(sqlite3_mutex *p){ return 1; }
|
| -static int noopMutexNotheld(sqlite3_mutex *p){ return 1; }
|
| -static int noopMutexInit(void){ return SQLITE_OK; }
|
| -static int noopMutexEnd(void){ return SQLITE_OK; }
|
| -static sqlite3_mutex *noopMutexAlloc(int id){ return (sqlite3_mutex*)8; }
|
| -static void noopMutexFree(sqlite3_mutex *p){ return; }
|
| -static void noopMutexEnter(sqlite3_mutex *p){ return; }
|
| -static int noopMutexTry(sqlite3_mutex *p){ return SQLITE_OK; }
|
| -static void noopMutexLeave(sqlite3_mutex *p){ return; }
|
| -
|
| -sqlite3_mutex_methods *sqlite3DefaultMutex(void){
|
| - static sqlite3_mutex_methods sMutex = {
|
| - noopMutexInit,
|
| - noopMutexEnd,
|
| - noopMutexAlloc,
|
| - noopMutexFree,
|
| - noopMutexEnter,
|
| - noopMutexTry,
|
| - noopMutexLeave,
|
| -
|
| - noopMutexHeld,
|
| - noopMutexNotheld
|
| - };
|
| -
|
| - return &sMutex;
|
| -}
|
| -#endif /* defined(SQLITE_MUTEX_NOOP) && !defined(SQLITE_DEBUG) */
|
| -
|
| -#if defined(SQLITE_MUTEX_NOOP) && defined(SQLITE_DEBUG)
|
| -/*
|
| -** In this implementation, error checking is provided for testing
|
| -** and debugging purposes. The mutexes still do not provide any
|
| -** mutual exclusion.
|
| -*/
|
| -
|
| -/*
|
| -** The mutex object
|
| -*/
|
| -struct sqlite3_mutex {
|
| - int id; /* The mutex type */
|
| - int cnt; /* Number of entries without a matching leave */
|
| -};
|
| -
|
| -/*
|
| -** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
|
| -** intended for use inside assert() statements.
|
| -*/
|
| -static int debugMutexHeld(sqlite3_mutex *p){
|
| - return p==0 || p->cnt>0;
|
| -}
|
| -static int debugMutexNotheld(sqlite3_mutex *p){
|
| - return p==0 || p->cnt==0;
|
| -}
|
| -
|
| -/*
|
| -** Initialize and deinitialize the mutex subsystem.
|
| -*/
|
| -static int debugMutexInit(void){ return SQLITE_OK; }
|
| -static int debugMutexEnd(void){ return SQLITE_OK; }
|
| -
|
| -/*
|
| -** The sqlite3_mutex_alloc() routine allocates a new
|
| -** mutex and returns a pointer to it. If it returns NULL
|
| -** that means that a mutex could not be allocated.
|
| -*/
|
| -static sqlite3_mutex *debugMutexAlloc(int id){
|
| - static sqlite3_mutex aStatic[6];
|
| - sqlite3_mutex *pNew = 0;
|
| - switch( id ){
|
| - case SQLITE_MUTEX_FAST:
|
| - case SQLITE_MUTEX_RECURSIVE: {
|
| - pNew = sqlite3Malloc(sizeof(*pNew));
|
| - if( pNew ){
|
| - pNew->id = id;
|
| - pNew->cnt = 0;
|
| - }
|
| - break;
|
| - }
|
| - default: {
|
| - assert( id-2 >= 0 );
|
| - assert( id-2 < (int)(sizeof(aStatic)/sizeof(aStatic[0])) );
|
| - pNew = &aStatic[id-2];
|
| - pNew->id = id;
|
| - break;
|
| - }
|
| - }
|
| - return pNew;
|
| -}
|
| -
|
| -/*
|
| -** This routine deallocates a previously allocated mutex.
|
| -*/
|
| -static void debugMutexFree(sqlite3_mutex *p){
|
| - assert( p->cnt==0 );
|
| - assert( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE );
|
| - sqlite3_free(p);
|
| -}
|
| -
|
| -/*
|
| -** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
|
| -** to enter a mutex. If another thread is already within the mutex,
|
| -** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
|
| -** SQLITE_BUSY. The sqlite3_mutex_try() interface returns SQLITE_OK
|
| -** upon successful entry. Mutexes created using SQLITE_MUTEX_RECURSIVE can
|
| -** be entered multiple times by the same thread. In such cases the,
|
| -** mutex must be exited an equal number of times before another thread
|
| -** can enter. If the same thread tries to enter any other kind of mutex
|
| -** more than once, the behavior is undefined.
|
| -*/
|
| -static void debugMutexEnter(sqlite3_mutex *p){
|
| - assert( p->id==SQLITE_MUTEX_RECURSIVE || debugMutexNotheld(p) );
|
| - p->cnt++;
|
| -}
|
| -static int debugMutexTry(sqlite3_mutex *p){
|
| - assert( p->id==SQLITE_MUTEX_RECURSIVE || debugMutexNotheld(p) );
|
| - p->cnt++;
|
| - return SQLITE_OK;
|
| -}
|
| -
|
| -/*
|
| -** The sqlite3_mutex_leave() routine exits a mutex that was
|
| -** previously entered by the same thread. The behavior
|
| -** is undefined if the mutex is not currently entered or
|
| -** is not currently allocated. SQLite will never do either.
|
| -*/
|
| -static void debugMutexLeave(sqlite3_mutex *p){
|
| - assert( debugMutexHeld(p) );
|
| - p->cnt--;
|
| - assert( p->id==SQLITE_MUTEX_RECURSIVE || debugMutexNotheld(p) );
|
| -}
|
| -
|
| -sqlite3_mutex_methods *sqlite3DefaultMutex(void){
|
| - static sqlite3_mutex_methods sMutex = {
|
| - debugMutexInit,
|
| - debugMutexEnd,
|
| - debugMutexAlloc,
|
| - debugMutexFree,
|
| - debugMutexEnter,
|
| - debugMutexTry,
|
| - debugMutexLeave,
|
| -
|
| - debugMutexHeld,
|
| - debugMutexNotheld
|
| - };
|
| -
|
| - return &sMutex;
|
| -}
|
| -#endif /* defined(SQLITE_MUTEX_NOOP) && defined(SQLITE_DEBUG) */
|
|
|