Re: [PATCH 6/6] regulator: core: simplify lock_two()

From: Stephen Boyd
Date: Tue Aug 29 2023 - 16:53:04 EST


Quoting Michał Mirosław (2023-08-28 13:26:54)
> Indeed they are quite similar. I did remove a bit more code than that,
> though: in this case there is no early success return before the loop.
>
> Instead of saying:
>
> lock A
> lock B
> if ok return
> if that failed, loop:
> unlock A
> lock B harder
> lock A
> if ok return
> swap A <-> B
> lock B
>
> Now it's:
>
> lock A
> loop forever:
> lock B
> if ok, return
> unlock A
> swap them
> lock A harder
>
> With the same condition 'A held' at the start of an iteration.
>

Removing duplicate code is great! I'm primarily concerned with
readability. The terms 'A' and 'B' doesn't make it easy for me. Can you
maintain the 'held' and 'contended' names for the variables?

That would be

lock 'held'
loop forever:
lock 'contended'
if ok, return
unlock 'held'
swap them
lock 'held' harder

per the psuedo-code.