Mercurial > hg > CbC > CbC_gcc
view libsanitizer/tsan/tsan_rtl_proc.cc @ 120:f93fa5091070
fix conv1.c
author | mir3636 |
---|---|
date | Thu, 08 Mar 2018 14:53:42 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
//===-- tsan_rtl_proc.cc ------------------------------------------------===// // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file is a part of ThreadSanitizer (TSan), a race detector. // //===----------------------------------------------------------------------===// #include "sanitizer_common/sanitizer_placement_new.h" #include "tsan_rtl.h" #include "tsan_mman.h" #include "tsan_flags.h" namespace __tsan { Processor *ProcCreate() { void *mem = InternalAlloc(sizeof(Processor)); internal_memset(mem, 0, sizeof(Processor)); Processor *proc = new(mem) Processor; proc->thr = nullptr; #if !SANITIZER_GO AllocatorProcStart(proc); #endif if (common_flags()->detect_deadlocks) proc->dd_pt = ctx->dd->CreatePhysicalThread(); return proc; } void ProcDestroy(Processor *proc) { CHECK_EQ(proc->thr, nullptr); #if !SANITIZER_GO AllocatorProcFinish(proc); #endif ctx->clock_alloc.FlushCache(&proc->clock_cache); ctx->metamap.OnProcIdle(proc); if (common_flags()->detect_deadlocks) ctx->dd->DestroyPhysicalThread(proc->dd_pt); proc->~Processor(); InternalFree(proc); } void ProcWire(Processor *proc, ThreadState *thr) { CHECK_EQ(thr->proc1, nullptr); CHECK_EQ(proc->thr, nullptr); thr->proc1 = proc; proc->thr = thr; } void ProcUnwire(Processor *proc, ThreadState *thr) { CHECK_EQ(thr->proc1, proc); CHECK_EQ(proc->thr, thr); thr->proc1 = nullptr; proc->thr = nullptr; } } // namespace __tsan