Lines Matching refs:p
27 static void lockBtreeMutex(Btree *p){ in lockBtreeMutex() argument
28 assert( p->locked==0 ); in lockBtreeMutex()
29 assert( sqlite3_mutex_notheld(p->pBt->mutex) ); in lockBtreeMutex()
30 assert( sqlite3_mutex_held(p->db->mutex) ); in lockBtreeMutex()
32 sqlite3_mutex_enter(p->pBt->mutex); in lockBtreeMutex()
33 p->pBt->db = p->db; in lockBtreeMutex()
34 p->locked = 1; in lockBtreeMutex()
41 static void SQLITE_NOINLINE unlockBtreeMutex(Btree *p){ in unlockBtreeMutex() argument
42 BtShared *pBt = p->pBt; in unlockBtreeMutex()
43 assert( p->locked==1 ); in unlockBtreeMutex()
45 assert( sqlite3_mutex_held(p->db->mutex) ); in unlockBtreeMutex()
46 assert( p->db==pBt->db ); in unlockBtreeMutex()
49 p->locked = 0; in unlockBtreeMutex()
53 static void SQLITE_NOINLINE btreeLockCarefully(Btree *p);
71 void sqlite3BtreeEnter(Btree *p){ in sqlite3BtreeEnter() argument
76 assert( p->pNext==0 || p->pNext->pBt>p->pBt ); in sqlite3BtreeEnter()
77 assert( p->pPrev==0 || p->pPrev->pBt<p->pBt ); in sqlite3BtreeEnter()
78 assert( p->pNext==0 || p->pNext->db==p->db ); in sqlite3BtreeEnter()
79 assert( p->pPrev==0 || p->pPrev->db==p->db ); in sqlite3BtreeEnter()
80 assert( p->sharable || (p->pNext==0 && p->pPrev==0) ); in sqlite3BtreeEnter()
83 assert( !p->locked || p->wantToLock>0 ); in sqlite3BtreeEnter()
84 assert( p->sharable || p->wantToLock==0 ); in sqlite3BtreeEnter()
87 assert( sqlite3_mutex_held(p->db->mutex) ); in sqlite3BtreeEnter()
91 assert( (p->locked==0 && p->sharable) || p->pBt->db==p->db ); in sqlite3BtreeEnter()
93 if( !p->sharable ) return; in sqlite3BtreeEnter()
94 p->wantToLock++; in sqlite3BtreeEnter()
95 if( p->locked ) return; in sqlite3BtreeEnter()
96 btreeLockCarefully(p); in sqlite3BtreeEnter()
105 static void SQLITE_NOINLINE btreeLockCarefully(Btree *p){ in btreeLockCarefully() argument
112 if( sqlite3_mutex_try(p->pBt->mutex)==SQLITE_OK ){ in btreeLockCarefully()
113 p->pBt->db = p->db; in btreeLockCarefully()
114 p->locked = 1; in btreeLockCarefully()
123 for(pLater=p->pNext; pLater; pLater=pLater->pNext){ in btreeLockCarefully()
131 lockBtreeMutex(p); in btreeLockCarefully()
132 for(pLater=p->pNext; pLater; pLater=pLater->pNext){ in btreeLockCarefully()
143 void sqlite3BtreeLeave(Btree *p){ in sqlite3BtreeLeave() argument
144 assert( sqlite3_mutex_held(p->db->mutex) ); in sqlite3BtreeLeave()
145 if( p->sharable ){ in sqlite3BtreeLeave()
146 assert( p->wantToLock>0 ); in sqlite3BtreeLeave()
147 p->wantToLock--; in sqlite3BtreeLeave()
148 if( p->wantToLock==0 ){ in sqlite3BtreeLeave()
149 unlockBtreeMutex(p); in sqlite3BtreeLeave()
161 int sqlite3BtreeHoldsMutex(Btree *p){ in sqlite3BtreeHoldsMutex() argument
162 assert( p->sharable==0 || p->locked==0 || p->wantToLock>0 ); in sqlite3BtreeHoldsMutex()
163 assert( p->sharable==0 || p->locked==0 || p->db==p->pBt->db ); in sqlite3BtreeHoldsMutex()
164 assert( p->sharable==0 || p->locked==0 || sqlite3_mutex_held(p->pBt->mutex) ); in sqlite3BtreeHoldsMutex()
165 assert( p->sharable==0 || p->locked==0 || sqlite3_mutex_held(p->db->mutex) ); in sqlite3BtreeHoldsMutex()
167 return (p->sharable==0 || p->locked); in sqlite3BtreeHoldsMutex()
189 Btree *p; in btreeEnterAll() local
192 p = db->aDb[i].pBt; in btreeEnterAll()
193 if( p && p->sharable ){ in btreeEnterAll()
194 sqlite3BtreeEnter(p); in btreeEnterAll()
205 Btree *p; in btreeLeaveAll() local
208 p = db->aDb[i].pBt; in btreeLeaveAll()
209 if( p ) sqlite3BtreeLeave(p); in btreeLeaveAll()
229 Btree *p; in sqlite3BtreeHoldsAllMutexes() local
230 p = db->aDb[i].pBt; in sqlite3BtreeHoldsAllMutexes()
231 if( p && p->sharable && in sqlite3BtreeHoldsAllMutexes()
232 (p->wantToLock==0 || !sqlite3_mutex_held(p->pBt->mutex)) ){ in sqlite3BtreeHoldsAllMutexes()
253 Btree *p; in sqlite3SchemaMutexHeld() local
260 p = db->aDb[iDb].pBt; in sqlite3SchemaMutexHeld()
261 assert( p!=0 ); in sqlite3SchemaMutexHeld()
262 return p->sharable==0 || p->locked==1; in sqlite3SchemaMutexHeld()
277 void sqlite3BtreeEnter(Btree *p){ in sqlite3BtreeEnter() argument
278 p->pBt->db = p->db; in sqlite3BtreeEnter()
283 Btree *p = db->aDb[i].pBt; in sqlite3BtreeEnterAll() local
284 if( p ){ in sqlite3BtreeEnterAll()
285 p->pBt->db = p->db; in sqlite3BtreeEnterAll()