Re: [PATCH 3/5] u64_stats: Introduce IRQs disabled helpers

From: Paolo Bonzini
Date: Fri Sep 02 2016 - 10:36:07 EST




On 02/09/2016 16:03, Frederic Weisbecker wrote:
> static inline unsigned int u64_stats_fetch_begin(const struct u64_stats_sync *syncp)
> {
> -#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
> - return read_seqcount_begin(&syncp->seq);
> -#else
> -#if BITS_PER_LONG==32
> +#if BITS_PER_LONG==32 && !defined(CONFIG_SMP)
> preempt_disable();
> +#else

This should be #endif, or this side ends without a "return" statement.

> + return __u64_stats_fetch_begin(syncp);
> #endif
> - return 0;
> +}

...

>
> static inline bool u64_stats_fetch_retry(const struct u64_stats_sync *syncp,
> unsigned int start)
> {
> -#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
> - return read_seqcount_retry(&syncp->seq, start);
> -#else
> -#if BITS_PER_LONG==32
> +#if BITS_PER_LONG==32 && !defined(CONFIG_SMP)
> preempt_enable();
> -#endif
> - return false;
> +#else

Same here.

> + return __u64_stats_fetch_retry(syncp, start);
> #endif
> }


...

>
> - return read_seqcount_begin(&syncp->seq);
> -#else
> -#if BITS_PER_LONG==32
> +#if BITS_PER_LONG==32 && !defined(CONFIG_SMP)
> local_irq_disable();
> -#endif
> - return 0;
> +#else

Same here.

> + return __u64_stats_fetch_begin(syncp);
> #endif


>
> -#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
> - return read_seqcount_retry(&syncp->seq, start);
> -#else
> -#if BITS_PER_LONG==32
> +#if BITS_PER_LONG==32 && !defined(CONFIG_SMP)
> local_irq_enable();
> -#endif
> - return false;
> +#else

Same here.

> + return __u64_stats_fetch_retry(syncp, start);
> #endif


Thanks,

Paolo