diff --git a/include/verilated_cov.cpp b/include/verilated_cov.cpp index dd559427a..bb1893fd8 100644 --- a/include/verilated_cov.cpp +++ b/include/verilated_cov.cpp @@ -103,7 +103,7 @@ private: using ItemList = std::deque; // MEMBERS - VerilatedMutex m_mutex; // Protects all members + mutable VerilatedMutex m_mutex; // Protects all members ValueIndexMap m_valueIndexes VL_GUARDED_BY(m_mutex); // Unique arbitrary value for values IndexValueMap m_indexValues VL_GUARDED_BY(m_mutex); // Unique arbitrary value for keys ItemList m_items VL_GUARDED_BY(m_mutex); // List of all items diff --git a/include/verilated_imp.h b/include/verilated_imp.h index 24456e646..48bd6c42c 100644 --- a/include/verilated_imp.h +++ b/include/verilated_imp.h @@ -91,7 +91,7 @@ class VerilatedEvalMsgQueue final { std::atomic m_depth; // Current depth of queue (see comments below) - VerilatedMutex m_mutex; // Mutex protecting queue + mutable VerilatedMutex m_mutex; // Mutex protecting queue VerilatedThreadQueue m_queue VL_GUARDED_BY(m_mutex); // Message queue public: // CONSTRUCTORS diff --git a/include/verilated_profiler.h b/include/verilated_profiler.h index 86bfd3d13..b85bd0eb5 100644 --- a/include/verilated_profiler.h +++ b/include/verilated_profiler.h @@ -155,7 +155,7 @@ class VlExecutionProfiler final { // STATE static VL_THREAD_LOCAL ExecutionTrace t_trace; // thread-local trace buffers - VerilatedMutex m_mutex; + mutable VerilatedMutex m_mutex; // Map from thread id to &t_trace of given thread std::map m_traceps VL_GUARDED_BY(m_mutex); diff --git a/include/verilated_threads.h b/include/verilated_threads.h index e69ac8929..257c87162 100644 --- a/include/verilated_threads.h +++ b/include/verilated_threads.h @@ -150,7 +150,7 @@ private: }; // MEMBERS - VerilatedMutex m_mutex; + mutable VerilatedMutex m_mutex; std::condition_variable_any m_cv; // Only notify the condition_variable if the worker is waiting bool m_waiting VL_GUARDED_BY(m_mutex) = false; diff --git a/include/verilated_trace.h b/include/verilated_trace.h index 8069174ee..de000e611 100644 --- a/include/verilated_trace.h +++ b/include/verilated_trace.h @@ -47,7 +47,7 @@ // A simple synchronized first in first out queue template class VerilatedThreadQueue final { // LCOV_EXCL_LINE // lcov bug private: - VerilatedMutex m_mutex; // Protects m_queue + mutable VerilatedMutex m_mutex; // Protects m_queue std::condition_variable_any m_cv; std::deque m_queue VL_GUARDED_BY(m_mutex); @@ -208,7 +208,7 @@ protected: //========================================================================= // Internals available to format specific implementations - VerilatedMutex m_mutex; // Ensure dump() etc only called from single thread + mutable VerilatedMutex m_mutex; // Ensure dump() etc only called from single thread uint32_t nextCode() const { return m_nextCode; } uint32_t numSignals() const { return m_numSignals; }