| /* |
| * From lib/bitmap.c |
| * Helper functions for bitmap.h. |
| * |
| * This source code is licensed under the GNU General Public License, |
| * Version 2. See the file COPYING for more details. |
| */ |
| #include <linux/bitmap.h> |
| |
| int __bitmap_weight(const unsigned long *bitmap, int bits) |
| { |
| int k, w = 0, lim = bits/BITS_PER_LONG; |
| |
| for (k = 0; k < lim; k++) |
| w += hweight_long(bitmap[k]); |
| |
| if (bits % BITS_PER_LONG) |
| w += hweight_long(bitmap[k] & BITMAP_LAST_WORD_MASK(bits)); |
| |
| return w; |
| } |
| |
| void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, |
| const unsigned long *bitmap2, int bits) |
| { |
| int k; |
| int nr = BITS_TO_LONGS(bits); |
| |
| for (k = 0; k < nr; k++) |
| dst[k] = bitmap1[k] | bitmap2[k]; |
| } |