diff options
Diffstat (limited to 'include/linux/bitmap.h')
| -rw-r--r-- | include/linux/bitmap.h | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 8c4768c44a01..d3b66d77df7a 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -270,6 +270,18 @@ static inline void bitmap_copy_clear_tail(unsigned long *dst,  		dst[nbits / BITS_PER_LONG] &= BITMAP_LAST_WORD_MASK(nbits);  } +static inline void bitmap_copy_and_extend(unsigned long *to, +					  const unsigned long *from, +					  unsigned int count, unsigned int size) +{ +	unsigned int copy = BITS_TO_LONGS(count); + +	memcpy(to, from, copy * sizeof(long)); +	if (count % BITS_PER_LONG) +		to[copy - 1] &= BITMAP_LAST_WORD_MASK(count); +	memset(to + copy, 0, bitmap_size(size) - copy * sizeof(long)); +} +  /*   * On 32-bit systems bitmaps are represented as u32 arrays internally. On LE64   * machines the order of hi and lo parts of numbers match the bitmap structure.  | 
