/* ** The sqlite4_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(sqlite4_mutex *pX){ sqlite4DebugMutex *p = (sqlite4DebugMutex*)pX; assert( debugMutexHeld(pX) ); p->cnt--; assert( p->id==SQLITE4_MUTEX_RECURSIVE || debugMutexNotheld(pX) ); }
static int debugMutexTry(sqlite4_mutex *pX){ sqlite4DebugMutex *p = (sqlite4DebugMutex*)pX; assert( p->id==SQLITE4_MUTEX_RECURSIVE || debugMutexNotheld(pX) ); p->cnt++; return SQLITE4_OK; }
/* ** The sqlite4_mutex_enter() and sqlite4_mutex_try() routines attempt ** to enter a mutex. If another thread is already within the mutex, ** sqlite4_mutex_enter() will block and sqlite4_mutex_try() will return ** SQLITE4_BUSY. The sqlite4_mutex_try() interface returns SQLITE4_OK ** upon successful entry. Mutexes created using SQLITE4_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(sqlite4_mutex *pX){ sqlite4DebugMutex *p = (sqlite4DebugMutex*)pX; assert( p->id==SQLITE4_MUTEX_RECURSIVE || debugMutexNotheld(pX) ); p->cnt++; }
/* ** 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) ); }
static int debugMutexTry(sqlite3_mutex *p){ assert( p->id==SQLITE_MUTEX_RECURSIVE || debugMutexNotheld(p) ); p->cnt++; return SQLITE_OK; }
/* ** 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++; }