On Fri, Aug 19, 2022 at 11:34:01AM +0100, Valentin Schneider wrote: > On 18/08/22 22:04, Andy Shevchenko wrote: > > On Thu, Aug 18, 2022 at 8:18 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > >> On Thu, 18 Aug 2022 17:26:43 +0100 > >> Valentin Schneider <vschneid@xxxxxxxxxx> wrote: > >> > >> > How about: > >> > >> > > >> > find the next set bit in (*addr1 & ~*addr2) > >> > >> I understand the above better. But to convert that into English, we could > >> say: > >> > >> > >> Find the next bit in *addr1 excluding all the bits in *addr2. > >> > >> or > >> > >> Find the next bit in *addr1 that is not set in *addr2. > > > > With this explanation I'm wondering how different this is to > > bitmap_bitremap(), with adjusting to using an inverted mask. If they > > have something in common, perhaps make them in the same namespace with > > similar naming convention? > > > > I'm trying to wrap my head around the whole remap thing, IIUC we could have > something like remap *addr1 to ~*addr2 and stop rather than continue with a > wraparound, but that really feels like shoehorning. Old and new maps create a simple forward-looking mapping, like this: #0 #4 old: 0111 0 ... | \\\| New: 00 111 ... So if you pass #0, it's wired to 0; but #1 will skip 1 bit and would be wired to 2; and so on. There is some puzzling when wraparound comes in play, but the general idea is like that. I think there's nothing common with bitmap_and{,_not}. Thanks, Yury