On Fri, Apr 19, 2019 at 09:17:17AM +0900, Matteo Croce wrote:
> > extern const int sysctl_zero;
> > /* comment goes here */
> > #define SYSCTL_ZERO ((void *)&sysctl_zero)
> >
> > and then use SYSCTL_ZERO everywhere. That centralizes the ugliness
> > and
> > makes it easier to switch over if/when extra1&2 are constified.
> >
> > But it's all a bit sad and lame :(
>
> No, we didn't decide yet. I need to check for all extra1,2 assignment. Not an
> impossible task, anyway.
>
> I agree that the casts are ugly. Your suggested macro moves the ugliness in a
> single point, which is good. Or maybe we can do a single macro like:
>
> #define SYSCTL_VAL(x) ((void *)&sysctl_##x)
>
> to avoid defining one for every value. And when we decide that everything can
> be const, we just update the macro.
If we're going to do that, we can save two EXPORTs and do:
const int sysctl_vals[] = { 0, 1, -1 };
EXPORT_SYMBOL(sysctl_vals);
#define SYSCTL_ZERO ((void *)&sysctl_vals[0])