<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 28 Oct 2022 at 10:43, Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com">kieran.bingham@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Quoting Nicholas Roth via libcamera-devel (2022-10-28 04:17:18)<br>
> From: Nicholas Roth <<a href="mailto:nicholas@rothemail.net" target="_blank">nicholas@rothemail.net</a>><br>
> <br>
> The raspberrypi IPA is missing thread-safety annotations, which breaks<br>
> the build.<br>
> <br>
> Add required thread-safety annotations.<br>
> <br>
> ../src/ipa/raspberrypi/controller/metadata.h:108:31: error: mutex<br>
> 'mutex_' is still held at the end of function [-Werror,-Wthread-safety-analysis]<br>
> void lock() { mutex_.lock(); }<br>
> ^<br>
> ../src/ipa/raspberrypi/controller/metadata.h:108:23: note: mutex<br>
> acquired here<br>
> void lock() { mutex_.lock(); }<br>
> ^<br>
> ../src/ipa/raspberrypi/controller/metadata.h:109:25: error: releasing<br>
> mutex 'mutex_' that was not held [-Werror,-Wthread-safety-analysis]<br>
> void unlock() { mutex_.unlock(); }<br>
> ^<br>
> <br>
> Signed-off-by: Nicholas Roth <<a href="mailto:nicholas@rothemail.net" target="_blank">nicholas@rothemail.net</a>><br>
<br>
>From Jacopo on v1<br>
<br>
Reviewed-by: Jacopo Mondi <<a href="mailto:jacopo@jmondi.org" target="_blank">jacopo@jmondi.org</a>><br>
<br>
>From Me<br>
<br>
Reviewed-by: Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com" target="_blank">kieran.bingham@ideasonboard.com</a>><br>
<br>
Naush - any objections or concerns on this patch?<br></blockquote><div><br></div><div>Nope, all looks fine:</div><div><br></div><div>Reviewed-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com">naush@raspberrypi.com</a>></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
<br>
> ---<br>
> src/ipa/raspberrypi/controller/metadata.h | 8 +++++---<br>
> 1 file changed, 5 insertions(+), 3 deletions(-)<br>
> <br>
> diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/raspberrypi/controller/metadata.h<br>
> index 0f7ebfaf..870b6e26 100644<br>
> --- a/src/ipa/raspberrypi/controller/metadata.h<br>
> +++ b/src/ipa/raspberrypi/controller/metadata.h<br>
> @@ -13,9 +13,11 @@<br>
> #include <mutex><br>
> #include <string><br>
> <br>
> +#include <libcamera/base/thread_annotations.h><br>
> +<br>
> namespace RPiController {<br>
> <br>
> -class Metadata<br>
> +class LIBCAMERA_TSA_CAPABILITY("mutex") Metadata<br>
> {<br>
> public:<br>
> Metadata() = default;<br>
> @@ -103,8 +105,8 @@ public:<br>
> * locks with the standard lock classes.<br>
> * e.g. std::lock_guard<RPiController::Metadata> lock(metadata)<br>
> */<br>
> - void lock() { mutex_.lock(); }<br>
> - void unlock() { mutex_.unlock(); }<br>
> + void lock() LIBCAMERA_TSA_ACQUIRE() { mutex_.lock(); }<br>
> + void unlock() LIBCAMERA_TSA_RELEASE() { mutex_.unlock(); }<br>
> <br>
> private:<br>
> mutable std::mutex mutex_;<br>
> -- <br>
> 2.34.1<br>
><br>
</blockquote></div></div>