Re: [PATCH v7 5/6] MCS Lock: allow architectures to hook in tocontended paths

From: Peter Zijlstra
Date: Mon Jan 20 2014 - 07:20:33 EST


On Thu, Jan 16, 2014 at 04:08:31PM -0800, Tim Chen wrote:
> +#ifndef arch_mcs_spin_lock_contended
> +/*
> + * Using smp_load_acquire() provides a memory barrier that ensures
> + * subsequent operations happen after the lock is acquired.
> + */
> +#define arch_mcs_spin_lock_contended(l) \
> + while (!(smp_load_acquire(l))) { \
> + arch_mutex_cpu_relax(); \
> + }
> +#endif

I think that wants to be:

#define arch_mcs_spin_lock_contended(l) \
do { \
while (!smp_load_acquire(l)) \
arch_mutex_cpu_relax(); \
} while (0)

So that we properly eat the ';' in: arch_mcs_spin_lock_contended(l);.

> +#ifndef arch_mcs_spin_unlock_contended
> +/*
> + * smp_store_release() provides a memory barrier to ensure all
> + * operations in the critical section has been completed before
> + * unlocking.
> + */
> +#define arch_mcs_spin_unlock_contended(l) \
> + smp_store_release((l), 1)
> #endif
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/