Re: [PATCH v1 3/5] seqlock: seqcount_t: Implement all read APIs as statement expressions

From: peterz
Date: Fri Aug 28 2020 - 04:30:36 EST


On Fri, Aug 28, 2020 at 03:07:08AM +0200, Ahmed S. Darwish wrote:
> #define __read_seqcount_begin(s) \
> +({ \
> + unsigned seq; \
> + \
> + do { \
> + seq = __seqcount_sequence(s); \
> + if (likely(! (seq & 1))) \
> + break; \
> + cpu_relax(); \
> + } while (true); \
> + \
> + kcsan_atomic_next(KCSAN_SEQLOCK_REGION_MAX); \
> + seq; \
> +})

Since we're there anyway, does it make sense to (re)write this like:

while ((seq = __seqcount_sequence(s)) & 1)
cpu_relax();

?