Messages in this thread | | | From | Linus Torvalds <> | Date | Fri, 15 Sep 2023 14:50:48 -0700 | Subject | Re: Buggy __free(kfree) usage pattern already in tree |
| |
On Fri, 15 Sept 2023 at 14:32, Peter Zijlstra <peterz@infradead.org> wrote: > > > It also got me thinking about named_guard() for the myriad of > conditional locks we have. > > named_guard(try_mutex, foo_guard)(&foo->lock); > if (foo_guard) { > // we got the lock, do our thing > }
Hmm. It looks ugly to me. I really hate the "named_guard" thing. One of the reasons I liked the guard/scoped_guard() macros was because how it created _anonymous_ guards, and made it completely unnecessary to make up a pointless name.
If trylock ends up being a common pattern, I think we should strive to make it a lot easier to use.
Can we make it act like "scoped_guard()", except the lock function is fundamentally conditional?
Call it "cond_guard()", and make the syntax otherwise be the same as "scoped_guard()", iow, using a unique ID for the guard name.
So
cond_guard(try_mutex)(&foo->lock) { .. this is the "we got the lock" region .. }
would I think be a much better syntax.
Could we live with that?
Linus
| |