@@ -151,7 +151,7 @@ private:
friend class ThreadMain;
Thread *thread_;
- bool running_;
+ bool running_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
pid_t tid_;
Mutex mutex_;
@@ -160,7 +160,7 @@ private:
ConditionVariable cv_;
std::atomic<bool> exit_;
- int exitCode_;
+ int exitCode_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
MessageQueue messages_;
};
@@ -390,7 +390,7 @@ void Thread::finishThread()
*
* \context This function is \threadsafe.
*/
-void Thread::exitint code)
+void Thread::exit(int code)
{
data_->mutex_.lock();
data_->exitCode_ = code;
@@ -424,11 +424,19 @@ bool Thread::wait(utils::duration duration)
{
MutexLocker locker(data_->mutex_);
- if (duration == utils::duration::max())
- data_->cv_.wait(locker, [&]() { return !data_->running_; });
- else
- hasFinished = data_->cv_.wait_for(locker, duration,
- [&]() { return !data_->running_; });
+ if (duration == utils::duration::max()) {
+ data_->cv_.wait(
+ locker,
+ [&]() LIBCAMERA_TSA_REQUIRES(data_->mutex_) {
+ return !data_->running_;
+ });
+ } else {
+ hasFinished = data_->cv_.wait_for(
+ locker, duration,
+ [&]() LIBCAMERA_TSA_REQUIRES(data_->mutex_) {
+ return !data_->running_;
+ });
+ }
}
if (thread_.joinable())
This annotates member variables of ThreadData by clang thread safety annotations. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> --- src/libcamera/base/thread.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)