From: David Sterba Date: Fri, 9 Sep 2022 15:20:25 +0000 (+0200) Subject: btrfs: add helper for bit enumeration X-Git-Tag: v6.6.17~5604^2~236 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d549ff7bdbe72f5e0e934895090fed2647e9813b;p=platform%2Fkernel%2Flinux-rpi.git btrfs: add helper for bit enumeration Define helper macro that can be used in enum {} to utilize the automatic increment to define all bits without directly defining the values or using additional linear bits. 1. capture the sequence value, N 2. use the value to define the given enum with N-th bit set 3. reset the sequence back to N Use for enums that do not require fixed values for symbolic names (like for on-disk structures): enum { ENUM_BIT(FIRST), ENUM_BIT(SECOND), ENUM_BIT(THIRD) }; Where the values would be 0x1, 0x2 and 0x4. Reviewed-by: Josef Bacik Signed-off-by: David Sterba --- diff --git a/fs/btrfs/misc.h b/fs/btrfs/misc.h index f9850edf..69826cc 100644 --- a/fs/btrfs/misc.h +++ b/fs/btrfs/misc.h @@ -10,6 +10,14 @@ #define in_range(b, first, len) ((b) >= (first) && (b) < (first) + (len)) +/* + * Enumerate bits using enum autoincrement. Define the @name as the n-th bit. + */ +#define ENUM_BIT(name) \ + __ ## name ## _BIT, \ + name = (1U << __ ## name ## _BIT), \ + __ ## name ## _SEQ = __ ## name ## _BIT + static inline void cond_wake_up(struct wait_queue_head *wq) { /*