Date: Fri, 6 May 2016 16:41:24 +0000 (UTC) From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= <royger@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r299184 - head/sys/sys Message-ID: <201605061641.u46GfOY2026236@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: royger Date: Fri May 6 16:41:23 2016 New Revision: 299184 URL: https://svnweb.freebsd.org/changeset/base/299184 Log: bitset: introduce helpers to allocate a bitset at runtime Introduce some new helpers to declare and allocate a dynamic bitset, whose size is not a constant. Sponsored by: Citrix Systems R&D Reviewed by: kib jhb Differential revision: https://reviews.freebsd.org/D6226 Modified: head/sys/sys/_bitset.h head/sys/sys/bitset.h Modified: head/sys/sys/_bitset.h ============================================================================== --- head/sys/sys/_bitset.h Fri May 6 16:03:40 2016 (r299183) +++ head/sys/sys/_bitset.h Fri May 6 16:41:23 2016 (r299184) @@ -47,4 +47,12 @@ struct t { \ long __bits[__bitset_words((_s))]; \ } +/* + * Helper to declare a bitset without it's size being a constant. + * + * Sadly we cannot declare a bitset struct with '__bits[]', because it's + * the only member of the struct and the compiler complains. + */ +#define BITSET_DEFINE_VAR(t) BITSET_DEFINE(t, 1) + #endif /* !_SYS__BITSET_H_ */ Modified: head/sys/sys/bitset.h ============================================================================== --- head/sys/sys/bitset.h Fri May 6 16:03:40 2016 (r299183) +++ head/sys/sys/bitset.h Fri May 6 16:41:23 2016 (r299184) @@ -199,4 +199,10 @@ #define BITSET_FSET(n) \ [ 0 ... ((n) - 1) ] = (-1L) +/* + * Dynamically allocate a bitset. + */ +#define BITSET_ALLOC(_s, mt, mf) \ + malloc(__bitset_words(_s) * sizeof(long), mt, (mf)) + #endif /* !_SYS_BITSET_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605061641.u46GfOY2026236>