Re: [PATCH net-next v5 01/21] lib/bitmap: add bitmap_{read,write}()

From: Alexander Lobakin
Date: Thu Feb 01 2024 - 10:51:16 EST


From: Arnd Bergmann <arnd@xxxxxxxx>
Date: Thu, 01 Feb 2024 14:23:33 +0100

> On Thu, Feb 1, 2024, at 13:21, Alexander Lobakin wrote:
>> From: Syed Nayyar Waris <syednwaris@xxxxxxxxx>
>>
>> The two new functions allow reading/writing values of length up to
>> BITS_PER_LONG bits at arbitrary position in the bitmap.
>>
>> The code was taken from "bitops: Introduce the for_each_set_clump macro"
>> by Syed Nayyar Waris with a number of changes and simplifications:
>> - instead of using roundup(), which adds an unnecessary dependency
>> on <linux/math.h>, we calculate space as BITS_PER_LONG-offset;
>> - indentation is reduced by not using else-clauses (suggested by
>> checkpatch for bitmap_get_value());
>> - bitmap_get_value()/bitmap_set_value() are renamed to bitmap_read()
>> and bitmap_write();
>> - some redundant computations are omitted.
>
> These functions feel like they should not be inline but are
> better off in lib/bitmap.c given their length.

When their arguments are compile-time constants, they got optimized
well. They're also used on hotpath, so making them external could hurt
performance + taking the first sentence into account, making them
external will hurt the performance even more, 'cause they won't be then
as optimized by the compiler as they are now.

>
> As far as I can tell, the header ends up being included
> indirectly almost everywhere, so just parsing these functions
> likey adds not just dependencies but also compile time.
>
> Arnd

Thanks,
Olek