[PATCH v5 1/5] drivers/raw: introduce AFU raw device driver
Stephen Hemminger
stephen at networkplumber.org
Mon Jun 6 17:38:21 CEST 2022
On Fri, 27 May 2022 01:37:00 -0400
Wei Huang <wei.huang at intel.com> wrote:
> +static inline int afu_mf_trylock(struct afu_mf_rawdev *dev)
> +{
> + int32_t x = 0;
> +
> + if (!dev || !dev->shared)
> + return -ENODEV;
> +
> + x = __atomic_load_n(&dev->shared->lock, __ATOMIC_RELAXED);
> +
> + if ((x != 0) || (__atomic_compare_exchange_n(&dev->shared->lock, &x, 1,
> + 1, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED) == 0))
> + return -EBUSY;
> +
> + return 0;
> +}
> +
> +static inline void afu_mf_unlock(struct afu_mf_rawdev *dev)
> +{
> + if (!dev || !dev->shared)
> + return;
> +
> + __atomic_store_n(&dev->shared->lock, 0, __ATOMIC_RELEASE);
> +}
What other subsystem is this shared with?
Is there a good reason it can't just use existing spinlock?
More information about the stable
mailing list