[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [External] Re: [PATCH 1/2] QSLIST: add atomic replace operation
From: |
王洪浩 |
Subject: |
Re: [External] Re: [PATCH 1/2] QSLIST: add atomic replace operation |
Date: |
Tue, 25 Aug 2020 11:33:39 +0800 |
This function is indeed a bit vague in semantics.
I'll modify this function to make it more in line with `replace`.
Stefan Hajnoczi <stefanha@redhat.com> 于2020年8月24日周一 下午11:27写道:
>
> 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