[libcamera-devel] [PATCH 02/10] ipa: add missing thread-safety annotations
nicholas at rothemail.net
nicholas at rothemail.net
Thu Oct 27 07:55:07 CEST 2022
From: Nicholas Roth <nicholas at rothemail.net>
The raspberrypi IPA is missing thread-safety annotations, which breaks
the build.
Add required thread-safety annotations.
../src/ipa/raspberrypi/controller/metadata.h:108:31: error: mutex
'mutex_' is still held at the end of function [-Werror,-Wthread-safety-analysis]
void lock() { mutex_.lock(); }
^
../src/ipa/raspberrypi/controller/metadata.h:108:23: note: mutex
acquired here
void lock() { mutex_.lock(); }
^
../src/ipa/raspberrypi/controller/metadata.h:109:25: error: releasing
mutex 'mutex_' that was not held [-Werror,-Wthread-safety-analysis]
void unlock() { mutex_.unlock(); }
^
Signed-off-by: Nicholas Roth <nicholas at rothemail.net>
---
src/ipa/raspberrypi/controller/metadata.h | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/raspberrypi/controller/metadata.h
index 0f7ebfaf..870b6e26 100644
--- a/src/ipa/raspberrypi/controller/metadata.h
+++ b/src/ipa/raspberrypi/controller/metadata.h
@@ -13,9 +13,11 @@
#include <mutex>
#include <string>
+#include <libcamera/base/thread_annotations.h>
+
namespace RPiController {
-class Metadata
+class LIBCAMERA_TSA_CAPABILITY("mutex") Metadata
{
public:
Metadata() = default;
@@ -103,8 +105,8 @@ public:
* locks with the standard lock classes.
* e.g. std::lock_guard<RPiController::Metadata> lock(metadata)
*/
- void lock() { mutex_.lock(); }
- void unlock() { mutex_.unlock(); }
+ void lock() LIBCAMERA_TSA_ACQUIRE() { mutex_.lock(); }
+ void unlock() LIBCAMERA_TSA_RELEASE() { mutex_.unlock(); }
private:
mutable std::mutex mutex_;
--
2.34.1
More information about the libcamera-devel
mailing list