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])

Reply via email to