From c19ac303404966433096c4855a8192f746973522 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Mon, 25 Oct 2021 09:06:48 +0000 Subject: vppinfra: A bitmap copy function Type: improvement Signed-off-by: Neale Ranns Change-Id: Id7a7788b41dbcf280e025e5256c41729b0c95f39 --- src/vppinfra/bitmap.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/vppinfra/bitmap.h b/src/vppinfra/bitmap.h index 92205bfc8e8..af651ef0b7e 100644 --- a/src/vppinfra/bitmap.h +++ b/src/vppinfra/bitmap.h @@ -115,6 +115,24 @@ clib_bitmap_is_equal (uword * a, uword * b) #define clib_bitmap_validate(v,n_bits) \ clib_bitmap_vec_validate ((v), ((n_bits) - 1) / BITS (uword)) +/** Copy a bitmap + @param dst - copy to + @param src - copy from +*/ +static_always_inline void +clib_bitmap_copy (clib_bitmap_t **dst, const clib_bitmap_t *src) +{ + if (vec_len (src)) + { + clib_bitmap_vec_validate (*dst, vec_len (src) - 1); + vec_copy (*dst, src); + } + else + { + vec_reset_length (*dst); + } +} + /* low-level routine to remove trailing zeros from a bitmap */ always_inline uword * _clib_bitmap_remove_trailing_zeros (uword * a) -- cgit 1.2.3-korg