Looks good Ethan
On Fri, Aug 26, 2011 at 13:19, Ben Pfaff <b...@nicira.com> wrote: > --- > lib/bitmap.c | 21 ++++++++++++++++++++- > lib/bitmap.h | 2 ++ > 2 files changed, 22 insertions(+), 1 deletions(-) > > diff --git a/lib/bitmap.c b/lib/bitmap.c > index df3c4eb..76a667a 100644 > --- a/lib/bitmap.c > +++ b/lib/bitmap.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009 Nicira Networks. > + * Copyright (c) 2008, 2009, 2011 Nicira Networks. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -18,6 +18,25 @@ > #include "bitmap.h" > #include <string.h> > > +/* Allocates and returns a bitmap initialized to all-1-bits. */ > +unsigned long * > +bitmap_allocate1(size_t n_bits) > +{ > + size_t n_bytes = bitmap_n_bytes(n_bits); > + size_t n_longs = bitmap_n_longs(n_bits); > + unsigned long *bitmap; > + > + /* Allocate and initialize most of the bitmap. */ > + bitmap = xmalloc(n_bytes); > + memset(bitmap, 0xff, n_bytes); > + > + /* Ensure that the last "unsigned long" in the bitmap only has as many > + * 1-bits as there actually should be. */ > + bitmap[n_longs - 1] = (1UL << (n_bits % BITMAP_ULONG_BITS)) - 1; > + > + return bitmap; > +} > + > /* Sets 'count' consecutive bits in 'bitmap', starting at bit offset 'start', > * to 'value'. */ > void > diff --git a/lib/bitmap.h b/lib/bitmap.h > index f6feff0..c76e45f 100644 > --- a/lib/bitmap.h > +++ b/lib/bitmap.h > @@ -53,6 +53,8 @@ bitmap_allocate(size_t n_bits) > return xzalloc(bitmap_n_bytes(n_bits)); > } > > +unsigned long *bitmap_allocate1(size_t n_bits); > + > static inline unsigned long * > bitmap_clone(const unsigned long *bitmap, size_t n_bits) > { > -- > 1.7.4.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev