Lines Matching refs:pc
25 void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r);
29 uptr pc; member
31 Callback(ThreadState *thr, uptr pc) in Callback()
33 , pc(pc) { in Callback()
38 StackID Unwind() override { return CurrentStackId(thr, pc); } in Unwind()
42 void DDMutexInit(ThreadState *thr, uptr pc, SyncVar *s) { in DDMutexInit() argument
43 Callback cb(thr, pc); in DDMutexInit()
48 static void ReportMutexMisuse(ThreadState *thr, uptr pc, ReportType typ, in ReportMutexMisuse() argument
60 ObtainCurrentStack(thr, pc, &trace); in ReportMutexMisuse()
66 void MutexCreate(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexCreate() argument
71 MemoryAccess(thr, pc, addr, 1, kAccessWrite); in MutexCreate()
74 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexCreate()
79 s->creation_stack_id = CurrentStackId(thr, pc); in MutexCreate()
82 void MutexDestroy(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexDestroy() argument
98 Callback cb(thr, pc); in MutexDestroy()
117 ObtainCurrentStack(thr, pc, &trace); in MutexDestroy()
136 MemoryAccess(thr, pc, addr, 1, kAccessWrite | kAccessFree); in MutexDestroy()
140 void MutexPreLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPreLock() argument
143 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPreLock()
148 Callback cb(thr, pc); in MutexPreLock()
152 Callback cb(thr, pc); in MutexPreLock()
153 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPreLock()
157 void MutexPostLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz, int rec) { in MutexPostLock() argument
165 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexPostLock()
171 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPostLock()
189 AcquireImpl(thr, pc, &s->clock); in MutexPostLock()
190 AcquireImpl(thr, pc, &s->read_clock); in MutexPostLock()
197 Callback cb(thr, pc); in MutexPostLock()
205 ReportMutexMisuse(thr, pc, ReportTypeMutexDoubleLock, addr, mid); in MutexPostLock()
207 Callback cb(thr, pc); in MutexPostLock()
208 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPostLock()
212 int MutexUnlock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexUnlock() argument
215 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexUnlock()
220 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexUnlock()
234 ReleaseStoreImpl(thr, pc, &s->clock); in MutexUnlock()
241 Callback cb(thr, pc); in MutexUnlock()
247 ReportMutexMisuse(thr, pc, ReportTypeMutexBadUnlock, addr, mid); in MutexUnlock()
249 Callback cb(thr, pc); in MutexUnlock()
250 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexUnlock()
255 void MutexPreReadLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPreReadLock() argument
259 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPreReadLock()
262 Callback cb(thr, pc); in MutexPreReadLock()
265 Callback cb(thr, pc); in MutexPreReadLock()
266 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPreReadLock()
270 void MutexPostReadLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPostReadLock() argument
273 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexPostReadLock()
278 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPostReadLock()
289 AcquireImpl(thr, pc, &s->clock); in MutexPostReadLock()
295 Callback cb(thr, pc); in MutexPostReadLock()
303 ReportMutexMisuse(thr, pc, ReportTypeMutexBadReadLock, addr, mid); in MutexPostReadLock()
305 Callback cb(thr, pc); in MutexPostReadLock()
306 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPostReadLock()
310 void MutexReadUnlock(ThreadState *thr, uptr pc, uptr addr) { in MutexReadUnlock() argument
313 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexReadUnlock()
317 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexReadUnlock()
327 ReleaseImpl(thr, pc, &s->read_clock); in MutexReadUnlock()
329 Callback cb(thr, pc); in MutexReadUnlock()
336 ReportMutexMisuse(thr, pc, ReportTypeMutexBadReadUnlock, addr, mid); in MutexReadUnlock()
338 Callback cb(thr, pc); in MutexReadUnlock()
339 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexReadUnlock()
343 void MutexReadOrWriteUnlock(ThreadState *thr, uptr pc, uptr addr) { in MutexReadOrWriteUnlock() argument
346 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexReadOrWriteUnlock()
350 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexReadOrWriteUnlock()
358 ReleaseImpl(thr, pc, &s->read_clock); in MutexReadOrWriteUnlock()
367 ReleaseStoreImpl(thr, pc, &s->clock); in MutexReadOrWriteUnlock()
376 Callback cb(thr, pc); in MutexReadOrWriteUnlock()
382 ReportMutexMisuse(thr, pc, ReportTypeMutexBadUnlock, addr, mid); in MutexReadOrWriteUnlock()
384 Callback cb(thr, pc); in MutexReadOrWriteUnlock()
385 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexReadOrWriteUnlock()
389 void MutexRepair(ThreadState *thr, uptr pc, uptr addr) { in MutexRepair() argument
391 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexRepair()
397 void MutexInvalidAccess(ThreadState *thr, uptr pc, uptr addr) { in MutexInvalidAccess() argument
399 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexInvalidAccess()
400 ReportMutexMisuse(thr, pc, ReportTypeMutexInvalidAccess, addr, s->GetId()); in MutexInvalidAccess()
403 void Acquire(ThreadState *thr, uptr pc, uptr addr) { in Acquire() argument
411 AcquireImpl(thr, pc, &s->clock); in Acquire()
433 void ReleaseStoreAcquire(ThreadState *thr, uptr pc, uptr addr) { in ReleaseStoreAcquire() argument
437 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in ReleaseStoreAcquire()
442 ReleaseStoreAcquireImpl(thr, pc, &s->clock); in ReleaseStoreAcquire()
445 void Release(ThreadState *thr, uptr pc, uptr addr) { in Release() argument
449 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in Release()
454 ReleaseImpl(thr, pc, &s->clock); in Release()
457 void ReleaseStore(ThreadState *thr, uptr pc, uptr addr) { in ReleaseStore() argument
461 SyncVar *s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in ReleaseStore()
466 ReleaseStoreImpl(thr, pc, &s->clock); in ReleaseStore()
479 void AfterSleep(ThreadState *thr, uptr pc) { in AfterSleep() argument
483 thr->last_sleep_stack_id = CurrentStackId(thr, pc); in AfterSleep()
490 void AcquireImpl(ThreadState *thr, uptr pc, SyncClock *c) { in AcquireImpl() argument
497 void ReleaseStoreAcquireImpl(ThreadState *thr, uptr pc, SyncClock *c) { in ReleaseStoreAcquireImpl() argument
505 void ReleaseImpl(ThreadState *thr, uptr pc, SyncClock *c) { in ReleaseImpl() argument
513 void ReleaseStoreImpl(ThreadState *thr, uptr pc, SyncClock *c) { in ReleaseStoreImpl() argument
521 void AcquireReleaseImpl(ThreadState *thr, uptr pc, SyncClock *c) { in AcquireReleaseImpl() argument
529 void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r) { in ReportDeadlock() argument