On Fri, Sep 15, 2023 at 12:26:39AM +0200, Peter Zijlstra wrote: > On Thu, Sep 14, 2023 at 01:51:01PM -0700, Mitchell Levy wrote: > > > The more I think on this issue, the more I go back and forth. If we > > only had guard(...), the only way to approximate scoped guard would be > > to either just do what the macro does (i.e., a dummy for loop that > > only runs once) or use an anonymous scope, e.g., > > { > > guard(...); > > my_one_statement(); > > } > > Since this is how I've previously used std::lock_guard in C++, this > > pattern feels very familiar to me, and the scoped_guard feels almost > > like syntax sugar for this. As such, I feel like including the braces > > is most natural because, as Geert mentioned, it emphasizes the scope > > that "should" (in my brain, at least) be there. > > AFAIC the anonymous scope thing doesn't much happen in kernel coding > style -- although I'm sure it's there, the code-base is simply too vast > to not have it *somewhere*. The kernel typical style would be: do { ... } while (0) to create a 'pointless' scope. Apparently this is also what I've done in some conversions where a conditional lock was involved.