vlib: add vlib_frame_bitmap_{set,clear}_bit_at_index 00/38600/2
authorDamjan Marion <damarion@cisco.com>
Fri, 31 Mar 2023 12:14:41 +0000 (12:14 +0000)
committerNeale Ranns <neale@graphiant.com>
Sun, 2 Apr 2023 22:13:16 +0000 (22:13 +0000)
Type: improvement
Change-Id: I5703728f680f0c8431e4099b398827bd094b60df
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/node_funcs.h

index a75f1f3..9e0825b 100644 (file)
@@ -1403,6 +1403,22 @@ vlib_frame_bitmap_init (uword *bmp, u32 n_first_bits_set)
     bmp++[0] = 0;
 }
 
+static_always_inline void
+vlib_frame_bitmap_set_bit_at_index (uword *bmp, uword bit_index)
+{
+  bmp += bit_index / uword_bits;
+  bit_index %= uword_bits;
+  bmp[0] |= 1 << bit_index;
+}
+
+static_always_inline void
+_vlib_frame_bitmap_clear_bit_at_index (uword *bmp, uword bit_index)
+{
+  bmp += bit_index / uword_bits;
+  bit_index %= uword_bits;
+  bmp[0] &= ~((uword) 1 << bit_index);
+}
+
 static_always_inline void
 vlib_frame_bitmap_clear (uword *bmp)
 {