Re: [PATCH v5 02/36] compiler-context-analysis: Add infrastructure for Context Analysis with Clang
Bart Van Assche <[email protected]> Fri, 19 Dec 2025 11:04:49 -0800
| Newsgroups | org.kernel.vger.linux-sparse,dev.linux.lists.llvm,org.kernel.vger.linux-crypto,org.kernel.vger.linux-doc,org.kernel.vger.linux-kbuild,org.kernel.vger.linux-kernel,org.kernel.vger.linux-security-module,org.kernel.vger.linux-wireless,org.kernel.vger.rcu,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On 12/19/25 10:59 AM, Marco Elver wrote: > On Fri, 19 Dec 2025 at 19:39, 'Bart Van Assche' via kasan-dev > <[email protected]> wrote: >> I'm concerned that the context_lock_struct() macro will make code harder >> to read. Anyone who encounters the context_lock_struct() macro will have >> to look up its definition to learn what it does. I propose to split this >> macro into two macros: >> * One macro that expands into "__ctx_lock_type(name)". >> * A second macro that expands into the rest of the above macro. >> >> In other words, instead of having to write >> context_lock_struct(struct_name, { ... }); developers will have to write >> >> struct context_lock_type struct_name { >> ...; >> }; >> context_struct_helper_functions(struct_name); > > This doesn't necessarily help with not having to look up its > definition to learn what it does. > > If this is the common pattern, it will blindly be repeated, and this > adds 1 more line and makes this a bit more verbose. Maybe the helper > functions aren't always needed, but I also think that context lock > types should remain relatively few. For all synchronization > primitives that were enabled in this series, the helpers are required. > > The current usage is simply: > > context_lock_struct(name) { > ... struct goes here ... > }; // note no awkward ) brace > > I don't know which way the current kernel style is leaning towards, > but if we take <linux/cleanup.h> as an example, a simple programming > model / API is actually preferred. Many kernel developers are used to look up the definition of a data structure either by using ctags, etags or a similar tool or by using grep and a pattern like "${struct_name} {\$". Breaking the tools kernel developer use today to look up data structure definitions might cause considerable frustration and hence shouldn't be done lightly. Thanks, Bart.