diff options
author | Boris Staletic <boris.staletic@gmail.com> | 2019-01-23 17:42:31 +0100 |
---|---|---|
committer | Derek Mauro <761129+derekmauro@users.noreply.github.com> | 2019-01-23 11:42:31 -0500 |
commit | 6b4201f9ef650637510a21b8d6cbcc3bee4a606f (patch) | |
tree | 10702905e1d8169fb864c446f7bc67eb7903697f /absl/synchronization/internal/create_thread_identity.cc | |
parent | 0b1e6d417b414aad9282e32e8c49c719edeb63c1 (diff) |
Fix GCC8 warnings
Diffstat (limited to 'absl/synchronization/internal/create_thread_identity.cc')
-rw-r--r-- | absl/synchronization/internal/create_thread_identity.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/absl/synchronization/internal/create_thread_identity.cc b/absl/synchronization/internal/create_thread_identity.cc index e7a65cd8..60be25c9 100644 --- a/absl/synchronization/internal/create_thread_identity.cc +++ b/absl/synchronization/internal/create_thread_identity.cc @@ -67,6 +67,30 @@ static intptr_t RoundUp(intptr_t addr, intptr_t align) { return (addr + align - 1) & ~(align - 1); } +static void ResetThreadIdentity(base_internal::ThreadIdentity* identity) { + base_internal::PerThreadSynch* pts = &identity->per_thread_synch; + pts->next = nullptr; + pts->skip = nullptr; + pts->may_skip = false; + pts->waitp = nullptr; + pts->suppress_fatal_errors = false; + pts->readers = 0; + pts->priority = 0; + pts->next_priority_read_cycles = 0; + pts->state.store(base_internal::PerThreadSynch::State::kAvailable, + std::memory_order_relaxed); + pts->maybe_unlocking = false; + pts->wake = false; + pts->cond_waiter = false; + pts->all_locks = nullptr; + identity->waiter_state = {}; + identity->blocked_count_ptr = nullptr; + identity->ticker.store(0, std::memory_order_relaxed); + identity->wait_start.store(0, std::memory_order_relaxed); + identity->is_idle.store(false, std::memory_order_relaxed); + identity->next = nullptr; +} + static base_internal::ThreadIdentity* NewThreadIdentity() { base_internal::ThreadIdentity* identity = nullptr; @@ -90,7 +114,7 @@ static base_internal::ThreadIdentity* NewThreadIdentity() { RoundUp(reinterpret_cast<intptr_t>(allocation), base_internal::PerThreadSynch::kAlignment)); } - memset(identity, 0, sizeof(*identity)); + ResetThreadIdentity(identity); return identity; } |