Skip site navigation (1)Skip section navigation (2)
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>