[RFC] add NetBSD compat macros to sys/cdefs.h
Alfred Perlstein
bright at mu.org
Tue May 28 04:24:31 UTC 2013
On 5/27/13 7:21 PM, Garrett Cooper wrote:
> Hi,
> One of the things that I've done in order to reduce unnecessary
> divergence when porting NetBSD testcases to FreeBSD is I've pushed a
> few macros into my sys/cdefs.h in order to facilitate compatibility
> with NetBSD:
>
> /* NetBSD compat */
> /*
> * The following macro is used to remove const cast-away warnings
> * from gcc -Wcast-qual; it should be used with caution because it
> * can hide valid errors; in particular most valid uses are in
> * situations where the API requires it, not to cast away string
> * constants. We don't use *intptr_t on purpose here and we are
> * explicit about unsigned long so that we don't have additional
> * dependencies.
> */
> #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
>
> #define ___STRING(x) __STRING(x)
> #define __arraycount(__x) (sizeof(__x) / sizeof(__x[0]))
> /* End NetBSD compat */
>
> To clarify...
> - I know __UNCONST is basically like __DECONST on steroids as
> __UNCONST doesn't have the typecasting like __DECONST does.
> - I'm working at removing the need for ___STRING with upstream.
> - I know that __arraycount is equivalent to nitems.
>
> The reason why I'm doing this is to reduce divergence and get
> things going ASAP with the testing effort as I have a couple thousand
> testcases ported from NetBSD which will be hooked into release images
> (really soon) and will result in automated testing (not too far away,
> potentially a couple months), versus the zero coverage we currently
> have in FreeBSD. If _anyone_ has a better idea and is willing to pony
> up the patch to make things more sane, please by all means do.
> I would prefer not to use libnetbsd as it just introduces
> unnecessary churn in Makefiles and dependencies on a compat library
> strictly for a couple of C macros.
> Thoughts?
Under COMPAT_NETBSD?
-Alfred
More information about the freebsd-arch
mailing list