SYSCTL type safety

John Baldwin jhb at freebsd.org
Mon Jan 10 20:03:23 UTC 2011


On Friday, January 07, 2011 6:13:36 pm mdf at freebsd.org wrote:
> 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

You can't use time_t for INT and size_t for LONG.  If we have sysctl's 
exporting raw time_t and size_t types then we likely need to add some 
SYSCTL_TIME and SYSCTL_SIZE wrappers?

-- 
John Baldwin


More information about the freebsd-arch mailing list