reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

projects/compiler-rt/lib/tsan/rtl/tsan_rtl.h
  562 extern Context *ctx;  // The one and the only global runtime context.

References

projects/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
 4825   COMMON_INTERCEPTOR_SET_PTHREAD_NAME(ctx, thread, name);
projects/compiler-rt/lib/tsan/rtl/tsan_clock.cpp
   91   ClockBlock *cb = ctx->clock_alloc.Map(idx);
  103     ctx->clock_alloc.Free(c, cb->table[ClockBlock::kBlockIdx - i]);
  104   ctx->clock_alloc.Free(c, idx);
  248     dst->tab_ = ctx->clock_alloc.Map(cached_idx_);
  416     tab_idx_ = ctx->clock_alloc.Alloc(c);
  417     tab_ = ctx->clock_alloc.Map(tab_idx_);
  422     u32 idx = ctx->clock_alloc.Alloc(c);
  423     ClockBlock *new_cb = ctx->clock_alloc.Map(idx);
  436     u32 idx = ctx->clock_alloc.Alloc(c);
  437     ClockBlock *cb = ctx->clock_alloc.Map(idx);
  521   ClockBlock *cb = ctx->clock_alloc.Map(idx);
  581     ClockBlock *cb = ctx->clock_alloc.Map(idx);
projects/compiler-rt/lib/tsan/rtl/tsan_debugging.cpp
  208       if (block_begin) b = ctx->metamap.GetBlock((uptr)block_begin);
  218       ctx->thread_registry->Lock();
  220       ctx->thread_registry->Unlock();
  248     if (block_begin) b = ctx->metamap.GetBlock((uptr)block_begin);
  255   ThreadContextBase *tctx = ctx->thread_registry->GetThreadLocked(b->tid);
projects/compiler-rt/lib/tsan/rtl/tsan_external.cpp
  104     if (block_begin) b = ctx->metamap.GetBlock((uptr)block_begin);
projects/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp
  966   if (ctx->after_multithreaded_fork) {
 1891   if (!ctx->after_multithreaded_fork) {
 1911   if (!ctx->after_multithreaded_fork) {
 1930     ThreadRegistryLock l(ctx->thread_registry);
 1932     if (!IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack)) {
projects/compiler-rt/lib/tsan/rtl/tsan_interface_ann.cpp
  309       ctx->nmissed_expected++;
projects/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp
  233   SyncVar *s = ctx->metamap.GetIfExistsAndLock((uptr)a, false);
  271   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, (uptr)a, true);
  285     s = ctx->metamap.GetOrCreateAndLock(thr, pc, (uptr)a, true);
  410     s = ctx->metamap.GetOrCreateAndLock(thr, pc, (uptr)a, write_lock);
projects/compiler-rt/lib/tsan/rtl/tsan_interface_java.cpp
  113   ctx->metamap.FreeRange(thr->proc(), ptr, size);
  133   ctx->metamap.MoveMemory(src, dst, size);
  160     MBlock *b = ctx->metamap.GetBlock(from);
projects/compiler-rt/lib/tsan/rtl/tsan_mman.cpp
  145   if (IsFiredSuppression(ctx, ReportTypeSignalUnsafe, stack))
  147   ThreadRegistryLock l(ctx->thread_registry);
  171   if (ctx && ctx->initialized)
  171   if (ctx && ctx->initialized)
  180   if (ctx && ctx->initialized)
  180   if (ctx && ctx->initialized)
  216   ctx->metamap.AllocBlock(thr, pc, p, sz);
  225   uptr sz = ctx->metamap.FreeBlock(thr->proc(), p);
  309   MBlock *b = ctx->metamap.GetBlock((uptr)p);
  319   if (ctx == 0 || !ctx->initialized || thr->ignore_interceptors)
  319   if (ctx == 0 || !ctx->initialized || thr->ignore_interceptors)
  327   if (ctx == 0 || !ctx->initialized || thr->ignore_interceptors)
  327   if (ctx == 0 || !ctx->initialized || thr->ignore_interceptors)
  394   ctx->metamap.OnProcIdle(thr->proc());
projects/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
  178       atomic_load(&ctx->stop_background_thread, memory_order_relaxed) == 0;
  209       MemoryProfiler(ctx, mprof_fd, i);
  213       u64 last = atomic_load(&ctx->last_symbolize_time_ns,
  216         Lock l(&ctx->report_mtx);
  219         atomic_store(&ctx->last_symbolize_time_ns, 0, memory_order_relaxed);
  226   ctx->background_thread = internal_start_thread(&BackgroundThread, 0);
  231   atomic_store(&ctx->stop_background_thread, 1, memory_order_relaxed);
  232   internal_join_thread(ctx->background_thread);
  233   ctx->background_thread = 0;
  247   ctx->metamap.ResetRange(thr->proc(), addr, size);
  362   ctx = new(ctx_placeholder) Context;
  367   InitializeFlags(&ctx->flags, options, env_name);
  380     ctx->dd = DDetector::Create(flags());
  411   ctx->initialized = true;
  451   ctx->report_mtx.Lock();
  453   ctx->report_mtx.Unlock();
  461   if (ctx->nreported) {
  464     Printf("ThreadSanitizer: reported %d warnings\n", ctx->nreported);
  470   if (ctx->nmissed_expected) {
  473         ctx->nmissed_expected);
  495   ctx->thread_registry->Lock();
  496   ctx->report_mtx.Lock();
  500   ctx->report_mtx.Unlock();
  501   ctx->thread_registry->Unlock();
  505   ctx->report_mtx.Unlock();
  506   ctx->thread_registry->Unlock();
  509   ctx->thread_registry->GetNumberOfThreads(0, 0, &nthread /* alive threads */);
  518     ctx->after_multithreaded_fork = true;
  563   if (ctx->after_multithreaded_fork)
 1051   if (save_stack && !ctx->after_multithreaded_fork)
 1081   if (save_stack && !ctx->after_multithreaded_fork)
projects/compiler-rt/lib/tsan/rtl/tsan_rtl.h
  565   return &ctx->flags;
projects/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cpp
   44   ctx->dd->MutexInit(&cb, &s->dd);
   54   ThreadRegistryLock l(ctx->thread_registry);
   73   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
   83   SyncVar *s = ctx->metamap.GetIfExistsAndLock(addr, true);
   95     ctx->dd->MutexDestroy(&cb, &s->dd);
   96     ctx->dd->MutexInit(&cb, &s->dd);
  111     ThreadRegistryLock l(ctx->thread_registry);
  123     SyncVar *s = ctx->metamap.GetIfExistsAndLock(addr, true);
  145     SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, false);
  149       ctx->dd->MutexBeforeLock(&cb, &s->dd, true);
  151       ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  167   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  198       ctx->dd->MutexBeforeLock(&cb, &s->dd, true);
  199     ctx->dd->MutexAfterLock(&cb, &s->dd, true, flagz & MutexFlagTryLock);
  209     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  217   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  242     ctx->dd->MutexBeforeUnlock(&cb, &s->dd, true);
  251     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  259     SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, false);
  262     ctx->dd->MutexBeforeLock(&cb, &s->dd, false);
  264     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  273   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, false);
  293       ctx->dd->MutexBeforeLock(&cb, &s->dd, false);
  294     ctx->dd->MutexAfterLock(&cb, &s->dd, false, flagz & MutexFlagTryLock);
  304     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  313   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  326     ctx->dd->MutexBeforeUnlock(&cb, &s->dd, false);
  336     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  344   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  374     ctx->dd->MutexBeforeUnlock(&cb, &s->dd, write);
  383     ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb));
  389   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  397   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  407   SyncVar *s = ctx->metamap.GetIfExistsAndLock(addr, false);
  427   ThreadRegistryLock l(ctx->thread_registry);
  428   ctx->thread_registry->RunCallbackForEachThreadLocked(
  436   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  448   SyncVar *s = ctx->metamap.GetOrCreateAndLock(thr, pc, addr, true);
  471   ThreadRegistryLock l(ctx->thread_registry);
  472   ctx->thread_registry->RunCallbackForEachThreadLocked(
  516   ThreadRegistryLock l(ctx->thread_registry);
projects/compiler-rt/lib/tsan/rtl/tsan_rtl_proc.cpp
   29     proc->dd_pt = ctx->dd->CreatePhysicalThread();
   38   ctx->clock_alloc.FlushCache(&proc->clock_cache);
   39   ctx->metamap.OnProcIdle(proc);
   41      ctx->dd->DestroyPhysicalThread(proc->dd_pt);
projects/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cpp
  146   ctx->thread_registry->CheckLocked();
  151   ctx->report_mtx.Lock();
  155   ctx->report_mtx.Unlock();
  219   ctx->thread_registry->CheckLocked();
  221       ctx->thread_registry->FindThreadContextLocked(
  226   ctx->thread_registry->CheckLocked();
  228       ctx->thread_registry->GetThreadLocked(tid));
  243   ctx->thread_registry->CheckLocked();
  245       ctx->thread_registry->FindThreadContextLocked(IsInStackOrTls,
  281   SyncVar *s = ctx->metamap.GetIfExistsAndLock(addr, true);
  333       b = ctx->metamap.GetBlock((uptr)block_begin);
  449     ReadLock lock(&ctx->racy_mtx);
  453       for (uptr i = 0; i < ctx->racy_stacks.Size(); i++) {
  454         if (hash == ctx->racy_stacks[i]) {
  463       for (uptr i = 0; i < ctx->racy_addresses.Size(); i++) {
  464         RacyAddress ra2 = ctx->racy_addresses[i];
  478     Lock lock(&ctx->racy_mtx);
  479     ctx->racy_stacks.PushBack(hash);
  482     Lock lock(&ctx->racy_mtx);
  483     ctx->racy_addresses.PushBack(ra0);
  490   Lock lock(&ctx->racy_mtx);
  495     ctx->racy_stacks.PushBack(hash);
  499     ctx->racy_addresses.PushBack(ra0);
  506   atomic_store_relaxed(&ctx->last_symbolize_time_ns, NanoTime());
  521     Lock lock(&ctx->fired_suppressions_mtx);
  523     ctx->fired_suppressions.push_back(s);
  537   ctx->nreported++;
  630   if (IsFiredSuppression(ctx, typ, addr))
  658   if (IsFiredSuppression(ctx, typ, traces[0]))
  668   if (IsFiredSuppression(ctx, typ, traces[1]))
  684   ThreadRegistryLock l0(ctx->thread_registry);
  695         ctx->thread_registry->GetThreadLocked(s.tid()));
projects/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cpp
   95   new(thr) ThreadState(ctx, tid, unique_id, epoch0, reuse_count,
  110     thr->dd_lt = ctx->dd->CreateLogicalThread(unique_id);
  143     ctx->dd->DestroyLogicalThread(thr->dd_lt);
  196   if (ctx->after_multithreaded_fork)
  212   ThreadRegistryLock l(ctx->thread_registry);
  214   ctx->thread_registry->RunCallbackForEachThreadLocked(
  227   ctx->thread_registry->GetNumberOfThreads(0, 0, &result);
  236       ctx->thread_registry->CreateThread(uid, detached, parent_tid, &args);
  238   StatSet(thr, StatThreadMaxAlive, ctx->thread_registry->GetMaxAliveThreads());
  260   ThreadRegistry *tr = ctx->thread_registry;
  269   if (ctx->after_multithreaded_fork) {
  285   ctx->thread_registry->FinishThread(thr->tid);
  298   int res = ctx->thread_registry->FindThread(FindThreadByUid, (void*)uid);
  307   ctx->thread_registry->JoinThread(tid, thr);
  313   ctx->thread_registry->DetachThread(tid, thr);
  319   ctx->thread_registry->SetThreadUserId(tid, uid);
  323   ctx->thread_registry->SetThreadName(thr->tid, name);