Lines Matching refs:pc
25 void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r);
26 void ReportDestroyLocked(ThreadState *thr, uptr pc, uptr addr,
31 uptr pc; member
33 Callback(ThreadState *thr, uptr pc) in Callback()
35 , pc(pc) { in Callback()
40 StackID Unwind() override { return CurrentStackId(thr, pc); } in Unwind()
44 void DDMutexInit(ThreadState *thr, uptr pc, SyncVar *s) { in DDMutexInit() argument
45 Callback cb(thr, pc); in DDMutexInit()
50 static void ReportMutexMisuse(ThreadState *thr, uptr pc, ReportType typ, in ReportMutexMisuse() argument
62 ObtainCurrentStack(thr, pc, &trace); in ReportMutexMisuse()
68 static void RecordMutexLock(ThreadState *thr, uptr pc, uptr addr, in RecordMutexLock() argument
76 TraceMutexLock(thr, typ, pc, addr, stack_id); in RecordMutexLock()
86 void MutexCreate(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexCreate() argument
88 if (!(flagz & MutexFlagLinkerInit) && pc && IsAppMem(addr)) in MutexCreate()
89 MemoryAccess(thr, pc, addr, 1, kAccessWrite); in MutexCreate()
91 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexCreate()
95 s->creation_stack_id = CurrentStackId(thr, pc); in MutexCreate()
98 void MutexDestroy(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexDestroy() argument
118 Callback cb(thr, pc); in MutexDestroy()
130 if (pc && IsAppMem(addr)) in MutexDestroy()
131 MemoryAccess(thr, pc, addr, 1, in MutexDestroy()
135 ReportDestroyLocked(thr, pc, addr, last_lock, creation_stack_id); in MutexDestroy()
140 void MutexPreLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPreLock() argument
146 Callback cb(thr, pc); in MutexPreLock()
149 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPreLock()
155 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPreLock()
158 void MutexPostLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz, int rec) { in MutexPostLock() argument
165 if (pc && IsAppMem(addr)) in MutexPostLock()
166 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexPostLock()
173 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPostLock()
175 RecordMutexLock(thr, pc, addr, creation_stack_id, true); in MutexPostLock()
200 Callback cb(thr, pc); in MutexPostLock()
208 ReportMutexMisuse(thr, pc, ReportTypeMutexDoubleLock, addr, in MutexPostLock()
211 Callback cb(thr, pc); in MutexPostLock()
212 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPostLock()
216 int MutexUnlock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexUnlock() argument
218 if (pc && IsAppMem(addr)) in MutexUnlock()
219 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexUnlock()
226 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexUnlock()
249 Callback cb(thr, pc); in MutexUnlock()
257 ReportMutexMisuse(thr, pc, ReportTypeMutexBadUnlock, addr, in MutexUnlock()
260 Callback cb(thr, pc); in MutexUnlock()
261 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexUnlock()
266 void MutexPreReadLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPreReadLock() argument
270 Callback cb(thr, pc); in MutexPreReadLock()
273 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPreReadLock()
278 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPreReadLock()
281 void MutexPostReadLock(ThreadState *thr, uptr pc, uptr addr, u32 flagz) { in MutexPostReadLock() argument
283 if (pc && IsAppMem(addr)) in MutexPostReadLock()
284 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexPostReadLock()
290 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexPostReadLock()
292 RecordMutexLock(thr, pc, addr, creation_stack_id, false); in MutexPostReadLock()
308 Callback cb(thr, pc); in MutexPostReadLock()
316 ReportMutexMisuse(thr, pc, ReportTypeMutexBadReadLock, addr, in MutexPostReadLock()
319 Callback cb(thr, pc); in MutexPostReadLock()
320 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexPostReadLock()
324 void MutexReadUnlock(ThreadState *thr, uptr pc, uptr addr) { in MutexReadUnlock() argument
326 if (pc && IsAppMem(addr)) in MutexReadUnlock()
327 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexReadUnlock()
333 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexReadUnlock()
349 Callback cb(thr, pc); in MutexReadUnlock()
357 ReportMutexMisuse(thr, pc, ReportTypeMutexBadReadUnlock, addr, in MutexReadUnlock()
360 Callback cb(thr, pc); in MutexReadUnlock()
361 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexReadUnlock()
365 void MutexReadOrWriteUnlock(ThreadState *thr, uptr pc, uptr addr) { in MutexReadOrWriteUnlock() argument
367 if (pc && IsAppMem(addr)) in MutexReadOrWriteUnlock()
368 MemoryAccess(thr, pc, addr, 1, kAccessRead | kAccessAtomic); in MutexReadOrWriteUnlock()
375 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexReadOrWriteUnlock()
403 Callback cb(thr, pc); in MutexReadOrWriteUnlock()
411 ReportMutexMisuse(thr, pc, ReportTypeMutexBadUnlock, addr, in MutexReadOrWriteUnlock()
414 Callback cb(thr, pc); in MutexReadOrWriteUnlock()
415 ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); in MutexReadOrWriteUnlock()
419 void MutexRepair(ThreadState *thr, uptr pc, uptr addr) { in MutexRepair() argument
422 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexRepair()
428 void MutexInvalidAccess(ThreadState *thr, uptr pc, uptr addr) { in MutexInvalidAccess() argument
433 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, true); in MutexInvalidAccess()
437 ReportMutexMisuse(thr, pc, ReportTypeMutexInvalidAccess, addr, in MutexInvalidAccess()
441 void Acquire(ThreadState *thr, uptr pc, uptr addr) { in Acquire() argument
463 void Release(ThreadState *thr, uptr pc, uptr addr) { in Release() argument
469 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in Release()
476 void ReleaseStore(ThreadState *thr, uptr pc, uptr addr) { in ReleaseStore() argument
482 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in ReleaseStore()
489 void ReleaseStoreAcquire(ThreadState *thr, uptr pc, uptr addr) { in ReleaseStoreAcquire() argument
495 auto s = ctx->metamap.GetSyncOrCreate(thr, pc, addr, false); in ReleaseStoreAcquire()
516 void AfterSleep(ThreadState *thr, uptr pc) { in AfterSleep() argument
520 thr->last_sleep_stack_id = CurrentStackId(thr, pc); in AfterSleep()
528 void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r) { in ReportDeadlock() argument
554 void ReportDestroyLocked(ThreadState *thr, uptr pc, uptr addr, in ReportDestroyLocked() argument
564 ObtainCurrentStack(thr, pc, &trace); in ReportDestroyLocked()