/* * 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]; } size_t bitmap_scnprintf(unsigned long *bitmap, int nbits, char *buf, size_t size) { /* current bit is 'cur', most recently seen range is [rbot, rtop] */ int cur, rbot, rtop; bool first = true; size_t ret = 0; rbot = cur = find_first_bit(bitmap, nbits); while (cur < nbits) { rtop = cur; cur = find_next_bit(bitmap, nbits, cur + 1); if (cur < nbits && cur <= rtop + 1) continue; if (!first) ret += scnprintf(buf + ret, size - ret, ","); first = false; ret += scnprintf(buf + ret, size - ret, "%d", rbot); if (rbot < rtop) ret += scnprintf(buf + ret, size - ret, "-%d", rtop); rbot = cur; } return ret; } int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int bits) { unsigned int k; unsigned int lim = bits/BITS_PER_LONG; unsigned long result = 0; for (k = 0; k < lim; k++) result |= (dst[k] = bitmap1[k] & bitmap2[k]); if (bits % BITS_PER_LONG) result |= (dst[k] = bitmap1[k] & bitmap2[k] & BITMAP_LAST_WORD_MASK(bits)); return result != 0; } it/tree/drivers/usb/musb/musb_dma.h?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/drivers/usb/musb/musb_dma.h?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/drivers/usb/musb/musb_dma.h?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/drivers/usb/musb/musb_dma.h'> <input type='hidden' name='id' value='deb88a2a19e85842d79ba96b05031739ec327ff4'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/drivers?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>drivers</a>/<a href='/cgit.cgi/linux/net-next.git/log/drivers/usb?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>usb</a>/<a href='/cgit.cgi/linux/net-next.git/log/drivers/usb/musb?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>musb</a>/<a href='/cgit.cgi/linux/net-next.git/log/drivers/usb/musb/musb_dma.h?id=deb88a2a19e85842d79ba96b05031739ec327ff4'>musb_dma.h</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/drivers/usb/musb/musb_dma.h?id=deb88a2a19e85842d79ba96b05031739ec327ff4&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>