diff options
author | tommi@webrtc.org <tommi@webrtc.org> | 2015-03-19 09:30:29 +0000 |
---|---|---|
committer | tommi@webrtc.org <tommi@webrtc.org> | 2015-03-19 09:30:45 +0000 |
commit | c7157da599d3d8d5eb4e89d6a85e503da0e344e2 (patch) | |
tree | 02daf8a79eeaa2a8b0fa565df6eb02e6626cfb04 /webrtc/system_wrappers/source | |
parent | 9afaee74ab1ef36c8b4ea4c22f4c5aebf2359da2 (diff) | |
download | webrtc-c7157da599d3d8d5eb4e89d6a85e503da0e344e2.tar.gz |
Use atomic operations for setting/reading the trace filter.
The filter is currently being set and read by a number of threads and tripping up tsan.
Original review: https://webrtc-codereview.appspot.com/47609004/
R=mflodman@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/47659004
Cr-Commit-Position: refs/heads/master@{#8789}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8789 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'webrtc/system_wrappers/source')
-rw-r--r-- | webrtc/system_wrappers/source/trace_impl.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/webrtc/system_wrappers/source/trace_impl.cc b/webrtc/system_wrappers/source/trace_impl.cc index c41159dae6..6a293ccbd0 100644 --- a/webrtc/system_wrappers/source/trace_impl.cc +++ b/webrtc/system_wrappers/source/trace_impl.cc @@ -32,7 +32,7 @@ namespace webrtc { const int Trace::kBoilerplateLength = 71; const int Trace::kTimestampPosition = 13; const int Trace::kTimestampLength = 12; -uint32_t Trace::level_filter_ = kTraceDefault; +volatile int Trace::level_filter_ = kTraceDefault; // Construct On First Use idiom. Avoids "static initialization order fiasco". TraceImpl* TraceImpl::StaticInstance(CountOperation count_operation, @@ -518,14 +518,17 @@ bool TraceImpl::CreateFileName( return true; } +// static void Trace::CreateTrace() { TraceImpl::StaticInstance(kAddRef); } +// static void Trace::ReturnTrace() { TraceImpl::StaticInstance(kRelease); } +// static int32_t Trace::TraceFile(char file_name[FileWrapper::kMaxFileNameSize]) { TraceImpl* trace = TraceImpl::GetTrace(); if (trace) { @@ -536,6 +539,17 @@ int32_t Trace::TraceFile(char file_name[FileWrapper::kMaxFileNameSize]) { return -1; } +// static +void Trace::set_level_filter(int filter) { + rtc::AtomicOps::Store(&level_filter_, filter); +} + +// static +int Trace::level_filter() { + return rtc::AtomicOps::Load(&level_filter_); +} + +// static int32_t Trace::SetTraceFile(const char* file_name, const bool add_file_counter) { TraceImpl* trace = TraceImpl::GetTrace(); |