[libcamera-devel] [PATCH v2 3/5] libcamera: camera_manager: Apply clang thread safety annotation
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Aug 28 20:32:50 CEST 2022
Hi Umang and Hiro,
Thank you for the patch.
On Mon, Jun 20, 2022 at 10:20:25PM +0530, Umang Jain via libcamera-devel wrote:
> From: Hirokazu Honda <hiroh at chromium.org>
>
> This annotates member functions and variables of
> CameraManager::Private by clang thread safety annotations.
>
> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
> src/libcamera/camera_manager.cpp | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index 70d73822..4f946516 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -42,8 +42,8 @@ public:
>
> int start();
> void addCamera(std::shared_ptr<Camera> camera,
> - const std::vector<dev_t> &devnums);
> - void removeCamera(Camera *camera);
> + const std::vector<dev_t> &devnums) LIBCAMERA_TSA_EXCLUDES(mutex_);
> + void removeCamera(Camera *camera) LIBCAMERA_TSA_EXCLUDES(mutex_);
>
> /*
> * This mutex protects
> @@ -52,8 +52,8 @@ public:
> * - cameras_ and camerasByDevnum_ after initialization
> */
> mutable Mutex mutex_;
> - std::vector<std::shared_ptr<Camera>> cameras_;
> - std::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_;
> + std::vector<std::shared_ptr<Camera>> cameras_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
> + std::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
>
> protected:
> void run() override;
> @@ -61,11 +61,11 @@ protected:
> private:
> int init();
> void createPipelineHandlers();
> - void cleanup();
> + void cleanup() LIBCAMERA_TSA_EXCLUDES(mutex_);
>
> ConditionVariable cv_;
> - bool initialized_;
> - int status_;
> + bool initialized_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
> + int status_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
>
> std::unique_ptr<DeviceEnumerator> enumerator_;
>
> @@ -87,7 +87,8 @@ int CameraManager::Private::start()
>
> {
> MutexLocker locker(mutex_);
> - cv_.wait(locker, [&] { return initialized_; });
> + cv_.wait(locker,
> + [&]() LIBCAMERA_TSA_REQUIRES(mutex_) { return initialized_; });
cv_.wait(locker, [&]() LIBCAMERA_TSA_REQUIRES(mutex_) {
return initialized_;
});
to match the usual style.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> status = status_;
> }
>
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list