|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v12 2/8] xen: introduce generic non-atomic test_*bit()
On 29.05.2024 21:55, Oleksii Kurochko wrote:
> The following generic functions were introduced:
> * test_bit
> * generic__test_and_set_bit
> * generic__test_and_clear_bit
> * generic__test_and_change_bit
>
> These functions and macros can be useful for architectures
> that don't have corresponding arch-specific instructions.
>
> Also, the patch introduces the following generics which are
> used by the functions mentioned above:
> * BITOP_BITS_PER_WORD
> * BITOP_MASK
> * BITOP_WORD
> * BITOP_TYPE
>
> The following approach was chosen for generic*() and arch*() bit
> operation functions:
> If the bit operation function that is going to be generic starts
> with the prefix "__", then the corresponding generic/arch function
> will also contain the "__" prefix. For example:
> * test_bit() will be defined using arch_test_bit() and
> generic_test_bit().
> * __test_and_set_bit() will be defined using
> arch__test_and_set_bit() and generic__test_and_set_bit().
>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
Albeit I think you cound have gone further ...
> @@ -307,8 +295,7 @@ static inline int variable_test_bit(int nr, const
> volatile void *addr)
> return oldbit;
> }
>
> -#define test_bit(nr, addr) ({ \
> - if ( bitop_bad_size(addr) ) __bitop_bad_size(); \
> +#define arch_test_bit(nr, addr) ({ \
> __builtin_constant_p(nr) ? \
> constant_test_bit(nr, addr) : \
> variable_test_bit(nr, addr); \
... here, as constant_test_bit() is functionally the same as
generic_test_bit(), afaict. But that can well be cleaned up
subsequently, in order to no further delay this work of yours.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |