reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
347 if (s->owner_tid == SyncVar::kInvalidTid) { 352 TraceAddEvent(thr, thr->fast_state, EventTypeRUnlock, s->GetId()); 353 ReleaseImpl(thr, pc, &s->read_clock); 354 } else if (s->owner_tid == thr->tid) { 357 TraceAddEvent(thr, thr->fast_state, EventTypeUnlock, s->GetId()); 358 CHECK_GT(s->recursion, 0); 359 s->recursion--; 360 if (s->recursion == 0) { 362 s->owner_tid = SyncVar::kInvalidTid; 363 ReleaseStoreImpl(thr, pc, &s->clock); 367 } else if (!s->IsFlagSet(MutexFlagBroken)) { 368 s->SetFlags(MutexFlagBroken); 371 thr->mset.Del(s->GetId(), write); 372 if (common_flags()->detect_deadlocks && s->recursion == 0) { 374 ctx->dd->MutexBeforeUnlock(&cb, &s->dd, write); 376 u64 mid = s->GetId(); 377 s->mtx.Unlock();