mirror of https://github.com/xemu-project/xemu.git
hbitmap: move hbitmap_iter_next_word to hbitmap.c
The function is definitely internal (it's not used by third party and it has complicated interface). Move it to .c file. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: 20200205112041.6003-3-vsementsov@virtuozzo.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
6a150995d4
commit
be24c7140c
|
@ -362,34 +362,4 @@ void hbitmap_free_meta(HBitmap *hb);
|
||||||
*/
|
*/
|
||||||
int64_t hbitmap_iter_next(HBitmapIter *hbi);
|
int64_t hbitmap_iter_next(HBitmapIter *hbi);
|
||||||
|
|
||||||
/**
|
|
||||||
* hbitmap_iter_next_word:
|
|
||||||
* @hbi: HBitmapIter to operate on.
|
|
||||||
* @p_cur: Location where to store the next non-zero word.
|
|
||||||
*
|
|
||||||
* Return the index of the next nonzero word that is set in @hbi's
|
|
||||||
* associated HBitmap, and set *p_cur to the content of that word
|
|
||||||
* (bits before the index that was passed to hbitmap_iter_init are
|
|
||||||
* trimmed on the first call). Return -1, and set *p_cur to zero,
|
|
||||||
* if all remaining words are zero.
|
|
||||||
*/
|
|
||||||
static inline size_t hbitmap_iter_next_word(HBitmapIter *hbi, unsigned long *p_cur)
|
|
||||||
{
|
|
||||||
unsigned long cur = hbi->cur[HBITMAP_LEVELS - 1];
|
|
||||||
|
|
||||||
if (cur == 0) {
|
|
||||||
cur = hbitmap_iter_skip_words(hbi);
|
|
||||||
if (cur == 0) {
|
|
||||||
*p_cur = 0;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The next call will resume work from the next word. */
|
|
||||||
hbi->cur[HBITMAP_LEVELS - 1] = 0;
|
|
||||||
*p_cur = cur;
|
|
||||||
return hbi->pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -298,6 +298,35 @@ uint64_t hbitmap_count(const HBitmap *hb)
|
||||||
return hb->count << hb->granularity;
|
return hb->count << hb->granularity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hbitmap_iter_next_word:
|
||||||
|
* @hbi: HBitmapIter to operate on.
|
||||||
|
* @p_cur: Location where to store the next non-zero word.
|
||||||
|
*
|
||||||
|
* Return the index of the next nonzero word that is set in @hbi's
|
||||||
|
* associated HBitmap, and set *p_cur to the content of that word
|
||||||
|
* (bits before the index that was passed to hbitmap_iter_init are
|
||||||
|
* trimmed on the first call). Return -1, and set *p_cur to zero,
|
||||||
|
* if all remaining words are zero.
|
||||||
|
*/
|
||||||
|
static size_t hbitmap_iter_next_word(HBitmapIter *hbi, unsigned long *p_cur)
|
||||||
|
{
|
||||||
|
unsigned long cur = hbi->cur[HBITMAP_LEVELS - 1];
|
||||||
|
|
||||||
|
if (cur == 0) {
|
||||||
|
cur = hbitmap_iter_skip_words(hbi);
|
||||||
|
if (cur == 0) {
|
||||||
|
*p_cur = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The next call will resume work from the next word. */
|
||||||
|
hbi->cur[HBITMAP_LEVELS - 1] = 0;
|
||||||
|
*p_cur = cur;
|
||||||
|
return hbi->pos;
|
||||||
|
}
|
||||||
|
|
||||||
/* Count the number of set bits between start and end, not accounting for
|
/* Count the number of set bits between start and end, not accounting for
|
||||||
* the granularity. Also an example of how to use hbitmap_iter_next_word.
|
* the granularity. Also an example of how to use hbitmap_iter_next_word.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue