SYSCTL type safety

mdf at FreeBSD.org mdf at FreeBSD.org
Fri Jan 7 23:13:37 UTC 2011


Long ago at Isilon we ran into a problem with some sysctls in the
stock FreeBSD tree using the wrong type, like SYSCTL_ULONG on an int,
or just mixing unsigned/signed.  We have a patch that uses transparent
unions to cause a compile-time error with a type mismatch.  For a
while I was hesitant to push this since I wasn't sure about the use of
a gcc extension, but the SYSCTL fixes and the way to keep them sane
came up again when we started building a new driver locally, and the
build failed until we fixed some SYSCTL stuff.

Anyways, the patch to sys/sysctl.h is at

http://people.freebsd.org/~mdf/bsd-sysctl-type-safety.diff

Please chime in if you think this is a bad thing to add to the tree.
I will of course ensure a make universe passes locally before
committing this part.  The plan is to change the SYSCTL use, not the
base type of the variable, for any conflicts found.

Thanks,
matthew


More information about the freebsd-arch mailing list