summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_mutex.h
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-08-30 10:02:48 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-08-30 10:02:48 +0000
commit1b37017f0216d0b8f3ae3a7dea8b3cc20d74db25 (patch)
tree5532c416e616d78a75fb27f751ef7fbe6e9ef34d /lib/sanitizer_common/sanitizer_mutex.h
parent62825675e6b4f3d8459f745fe68ae30f236f82a5 (diff)
asan/tsan: first version of "stack depot"
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@162897 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_mutex.h')
-rw-r--r--lib/sanitizer_common/sanitizer_mutex.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/sanitizer_common/sanitizer_mutex.h b/lib/sanitizer_common/sanitizer_mutex.h
index ca3e2f9a4..6b6c25ddd 100644
--- a/lib/sanitizer_common/sanitizer_mutex.h
+++ b/lib/sanitizer_common/sanitizer_mutex.h
@@ -20,9 +20,9 @@
namespace __sanitizer {
-class SpinMutex {
+class StaticSpinMutex {
public:
- SpinMutex() {
+ void Init() {
atomic_store(&state_, 0, memory_order_relaxed);
}
@@ -50,7 +50,15 @@ class SpinMutex {
return;
}
}
+};
+class SpinMutex : public StaticSpinMutex {
+ public:
+ SpinMutex() {
+ Init();
+ }
+
+ private:
SpinMutex(const SpinMutex&);
void operator=(const SpinMutex&);
};
@@ -93,7 +101,7 @@ class GenericScopedReadLock {
void operator=(const GenericScopedReadLock&);
};
-typedef GenericScopedLock<SpinMutex> SpinMutexLock;
+typedef GenericScopedLock<StaticSpinMutex> SpinMutexLock;
} // namespace __sanitizer