Lines Matching refs:p

78 static int pthreadMutexHeld(sqlite3_mutex *p){  in pthreadMutexHeld()  argument
79 return (p->nRef!=0 && pthread_equal(p->owner, pthread_self())); in pthreadMutexHeld()
81 static int pthreadMutexNotheld(sqlite3_mutex *p){ in pthreadMutexNotheld() argument
82 return p->nRef==0 || pthread_equal(p->owner, pthread_self())==0; in pthreadMutexNotheld()
168 sqlite3_mutex *p; in pthreadMutexAlloc() local
171 p = sqlite3MallocZero( sizeof(*p) ); in pthreadMutexAlloc()
172 if( p ){ in pthreadMutexAlloc()
176 pthread_mutex_init(&p->mutex, 0); in pthreadMutexAlloc()
182 pthread_mutex_init(&p->mutex, &recursiveAttr); in pthreadMutexAlloc()
186 p->id = SQLITE_MUTEX_RECURSIVE; in pthreadMutexAlloc()
192 p = sqlite3MallocZero( sizeof(*p) ); in pthreadMutexAlloc()
193 if( p ){ in pthreadMutexAlloc()
194 pthread_mutex_init(&p->mutex, 0); in pthreadMutexAlloc()
196 p->id = SQLITE_MUTEX_FAST; in pthreadMutexAlloc()
208 p = &staticMutexes[iType-2]; in pthreadMutexAlloc()
213 assert( p==0 || p->id==iType ); in pthreadMutexAlloc()
215 return p; in pthreadMutexAlloc()
224 static void pthreadMutexFree(sqlite3_mutex *p){ in pthreadMutexFree() argument
225 assert( p->nRef==0 ); in pthreadMutexFree()
227 if( p->id==SQLITE_MUTEX_FAST || p->id==SQLITE_MUTEX_RECURSIVE ) in pthreadMutexFree()
230 pthread_mutex_destroy(&p->mutex); in pthreadMutexFree()
231 sqlite3_free(p); in pthreadMutexFree()
251 static void pthreadMutexEnter(sqlite3_mutex *p){ in pthreadMutexEnter() argument
252 assert( p->id==SQLITE_MUTEX_RECURSIVE || pthreadMutexNotheld(p) ); in pthreadMutexEnter()
267 if( p->nRef>0 && pthread_equal(p->owner, self) ){ in pthreadMutexEnter()
268 p->nRef++; in pthreadMutexEnter()
270 pthread_mutex_lock(&p->mutex); in pthreadMutexEnter()
271 assert( p->nRef==0 ); in pthreadMutexEnter()
272 p->owner = self; in pthreadMutexEnter()
273 p->nRef = 1; in pthreadMutexEnter()
279 pthread_mutex_lock(&p->mutex); in pthreadMutexEnter()
281 assert( p->nRef>0 || p->owner==0 ); in pthreadMutexEnter()
282 p->owner = pthread_self(); in pthreadMutexEnter()
283 p->nRef++; in pthreadMutexEnter()
288 if( p->trace ){ in pthreadMutexEnter()
289 printf("enter mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); in pthreadMutexEnter()
293 static int pthreadMutexTry(sqlite3_mutex *p){ in pthreadMutexTry() argument
295 assert( p->id==SQLITE_MUTEX_RECURSIVE || pthreadMutexNotheld(p) ); in pthreadMutexTry()
310 if( p->nRef>0 && pthread_equal(p->owner, self) ){ in pthreadMutexTry()
311 p->nRef++; in pthreadMutexTry()
313 }else if( pthread_mutex_trylock(&p->mutex)==0 ){ in pthreadMutexTry()
314 assert( p->nRef==0 ); in pthreadMutexTry()
315 p->owner = self; in pthreadMutexTry()
316 p->nRef = 1; in pthreadMutexTry()
325 if( pthread_mutex_trylock(&p->mutex)==0 ){ in pthreadMutexTry()
327 p->owner = pthread_self(); in pthreadMutexTry()
328 p->nRef++; in pthreadMutexTry()
337 if( rc==SQLITE_OK && p->trace ){ in pthreadMutexTry()
338 printf("enter mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); in pthreadMutexTry()
350 static void pthreadMutexLeave(sqlite3_mutex *p){ in pthreadMutexLeave() argument
351 assert( pthreadMutexHeld(p) ); in pthreadMutexLeave()
353 p->nRef--; in pthreadMutexLeave()
354 if( p->nRef==0 ) p->owner = 0; in pthreadMutexLeave()
356 assert( p->nRef==0 || p->id==SQLITE_MUTEX_RECURSIVE ); in pthreadMutexLeave()
359 if( p->nRef==0 ){ in pthreadMutexLeave()
360 pthread_mutex_unlock(&p->mutex); in pthreadMutexLeave()
363 pthread_mutex_unlock(&p->mutex); in pthreadMutexLeave()
367 if( p->trace ){ in pthreadMutexLeave()
368 printf("leave mutex %p (%d) with nRef=%d\n", p, p->trace, p->nRef); in pthreadMutexLeave()