annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 //===-- tsan_rtl_proc.cc ------------------------------------------------===//
kono
parents:
diff changeset
2 //
kono
parents:
diff changeset
3 // This file is distributed under the University of Illinois Open Source
kono
parents:
diff changeset
4 // License. See LICENSE.TXT for details.
kono
parents:
diff changeset
5 //
kono
parents:
diff changeset
6 //===----------------------------------------------------------------------===//
kono
parents:
diff changeset
7 //
kono
parents:
diff changeset
8 // This file is a part of ThreadSanitizer (TSan), a race detector.
kono
parents:
diff changeset
9 //
kono
parents:
diff changeset
10 //===----------------------------------------------------------------------===//
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 #include "sanitizer_common/sanitizer_placement_new.h"
kono
parents:
diff changeset
13 #include "tsan_rtl.h"
kono
parents:
diff changeset
14 #include "tsan_mman.h"
kono
parents:
diff changeset
15 #include "tsan_flags.h"
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 namespace __tsan {
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 Processor *ProcCreate() {
kono
parents:
diff changeset
20 void *mem = InternalAlloc(sizeof(Processor));
kono
parents:
diff changeset
21 internal_memset(mem, 0, sizeof(Processor));
kono
parents:
diff changeset
22 Processor *proc = new(mem) Processor;
kono
parents:
diff changeset
23 proc->thr = nullptr;
kono
parents:
diff changeset
24 #if !SANITIZER_GO
kono
parents:
diff changeset
25 AllocatorProcStart(proc);
kono
parents:
diff changeset
26 #endif
kono
parents:
diff changeset
27 if (common_flags()->detect_deadlocks)
kono
parents:
diff changeset
28 proc->dd_pt = ctx->dd->CreatePhysicalThread();
kono
parents:
diff changeset
29 return proc;
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 void ProcDestroy(Processor *proc) {
kono
parents:
diff changeset
33 CHECK_EQ(proc->thr, nullptr);
kono
parents:
diff changeset
34 #if !SANITIZER_GO
kono
parents:
diff changeset
35 AllocatorProcFinish(proc);
kono
parents:
diff changeset
36 #endif
kono
parents:
diff changeset
37 ctx->clock_alloc.FlushCache(&proc->clock_cache);
kono
parents:
diff changeset
38 ctx->metamap.OnProcIdle(proc);
kono
parents:
diff changeset
39 if (common_flags()->detect_deadlocks)
kono
parents:
diff changeset
40 ctx->dd->DestroyPhysicalThread(proc->dd_pt);
kono
parents:
diff changeset
41 proc->~Processor();
kono
parents:
diff changeset
42 InternalFree(proc);
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 void ProcWire(Processor *proc, ThreadState *thr) {
kono
parents:
diff changeset
46 CHECK_EQ(thr->proc1, nullptr);
kono
parents:
diff changeset
47 CHECK_EQ(proc->thr, nullptr);
kono
parents:
diff changeset
48 thr->proc1 = proc;
kono
parents:
diff changeset
49 proc->thr = thr;
kono
parents:
diff changeset
50 }
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 void ProcUnwire(Processor *proc, ThreadState *thr) {
kono
parents:
diff changeset
53 CHECK_EQ(thr->proc1, proc);
kono
parents:
diff changeset
54 CHECK_EQ(proc->thr, thr);
kono
parents:
diff changeset
55 thr->proc1 = nullptr;
kono
parents:
diff changeset
56 proc->thr = nullptr;
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 } // namespace __tsan