Thread (10 messages) 10 messages, 2 authors, 2019-01-12

Re: [PATCH v7 1/8] bitops: Introduce the for_each_set_clump8 macro

From: Andy Shevchenko <hidden>
Date: 2019-01-12 08:37:16
Also in: linux-gpio, lkml

On Sat, Jan 12, 2019 at 3:47 AM William Breathitt Gray
[off-list ref] wrote:
This macro iterates for each 8-bit group of bits (clump) with set bits,
within a bitmap memory region. For each iteration, "start" is set to the
bit offset of the found clump, while the respective clump value is
stored to the location pointed by "clump". Additionally, the
bitmap_get_value8 and bitmap_set_value8 functions are introduced to
respectively get and set an 8-bit value in a bitmap memory region.
+unsigned int bitmap_get_value8(const unsigned long *const bitmap,
+                              const unsigned int start);
Hmm... Shouldn't be returned value of type unsigned long for sake of
consistency?
+/**
+ * bitmap_set_value8 - set an 8-bit value within a memory region
+ * @bitmap: address to the bitmap memory region
+ * @value: the 8-bit value
Put the same warning here as you did in cover letter
+ * @start: bit offset of the 8-bit value
+ */
+void bitmap_set_value8(unsigned long *const bitmap,
+                      const unsigned long value,
+                      const unsigned int start)
+{
+       const size_t index = BIT_WORD(start);
+       const unsigned int offset = start % BITS_PER_LONG;
+       const unsigned long mask = GENMASK(7, offset);
+
+       bitmap[index] &= ~mask;
+       bitmap[index] |= value << offset;
+}

-- 
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help