qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/2] QSLIST: add atomic replace operation


From: Stefan Hajnoczi
Subject: Re: [PATCH 1/2] QSLIST: add atomic replace operation
Date: Mon, 24 Aug 2020 16:26:59 +0100

On Mon, Aug 24, 2020 at 12:31:20PM +0800, wanghonghao wrote:
> Replace a queue with another atomicly. It's useful when we need to transfer
> queues between threads.
> 
> Signed-off-by: wanghonghao <wanghonghao@bytedance.com>
> ---
>  include/qemu/queue.h | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/include/qemu/queue.h b/include/qemu/queue.h
> index 456a5b01ee..a3ff544193 100644
> --- a/include/qemu/queue.h
> +++ b/include/qemu/queue.h
> @@ -226,6 +226,10 @@ struct {                                                 
>                \
>          (dest)->slh_first = atomic_xchg(&(src)->slh_first, NULL);        \
>  } while (/*CONSTCOND*/0)
>  
> +#define QSLIST_REPLACE_ATOMIC(dest, src) do {                                
>  \
> +        (src)->slh_first = atomic_xchg(&(dest)->slh_first, 
> (src)->slh_first); \
> +} while (/*CONSTCOND*/0)

This is atomic for dest but not src.

Maybe the name should make this clear: QSLIST_REPLACE_ATOMIC_DEST().

Please also add a doc comment mentioning that the modification to src is
not atomic.

Stefan

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]