[libcamera-devel] [PATCH 02/10] ipa: add missing thread-safety annotations
Jacopo Mondi
jacopo at jmondi.org
Fri Oct 28 09:32:31 CEST 2022
Hi Nicholas
On Thu, Oct 27, 2022 at 05:04:31PM -0500, Nicholas Roth wrote:
> > How come this gets inserted here by git when the commit author and the
> sender have the same identity ?
>
> I'm really not sure. Maybe because I specify "--from" in git-send-email? Is
> this not a standard thing to do?
> git send-email --compose --from=nicholas at rothemail.net --reply-to=
> libcamera-devel at lists.libcamera.org --to=libcamera-devel at lists.libcamera.org
> --subject="libcamera Android Enhancements" --thread --no-chain-reply-to
> --annotate -v2 main
Oh, so many options :)
I'm not sure if --from is the culprit, it might be, but be aware the
sender can be picked up automatically by git global config variables
and you most probably don't need this option.
I would discourage --reply-to, it mangles the "Reply-To" field of your
patches, something that might even break someone's scripts. Just
spcify the mailing list in the receiver or cc list and people will
reply to it.
--thread should be on by default if I get it right, same for
--no-chain-reply-to
Try to drop the --from and --reply-to options and see how it goes
>
> > nit: double empty line
> If you're referring to the commit message, the line below the error is for
> the carat that Clang uses to indicate the position of the error. Happy to
> not skip a line before "Signed-off-by" if it would help.
Ah sorry, missed it
>
> > this seems correct to me, even more so if it silences a compilation error.
> Do I need an LGTM from anyone else? What would the next step be here?
The policy is usually to get at least two reviewed-by tags. Once the
series is fully reviewed it will be picked up, run through a few
compiler matrices and if it touches the Android HAL through CTS, then
merged.
The process is still a bit fuzzy, we don't have per-component
maintainers nor someone designed specifically for the
'collect-test-merge' part, but it's usually Laurent and Kieran taking
care of that.
>
> On Thu, Oct 27, 2022 at 11:08 AM Jacopo Mondi <jacopo at jmondi.org> wrote:
>
> > Hi Nicholas
> >
> > On Thu, Oct 27, 2022 at 12:55:07AM -0500, Nicholas Roth via
> > libcamera-devel wrote:
> > > From: Nicholas Roth <nicholas at rothemail.net>
> >
> > How come this gets inserted here by git when the commit author and the
> > sender have the same identity ?
> >
> > >
> > > 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(); }
> > > ^
> >
> > nit: double empty line
> >
> > >
> > > Signed-off-by: Nicholas Roth <nicholas at rothemail.net>
> >
> > I've not followed much the thread annotation thing, but this seems
> > correct to me, even more so if it silences a compilation error.
> >
> > Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> >
> > > ---
> > > 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