qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 3/5] qemu-queue: drop QCIRCLEQ


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v2 3/5] qemu-queue: drop QCIRCLEQ
Date: Fri, 13 Jan 2012 18:05:27 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0

On 01/13/2012 05:44 PM, Peter Maydell wrote:
The main advantage of circular lists (the fact that the head node
>  has the same memory layout as any other node) is completely negated
>  by the implementation in qemu-queue.h.  Not surprisingly, nobody
>  uses QCIRCLEQ.  While this might change if RCU is ever adopted by
>  QEMU, the QLIST is also RCU-friendly and in fact it is used in a
>  RCU-like manner by 9pfs already.  So, just kill QCIRCLEQ.
Kirk McKusick on why CIRCLEQ existed in the first place and
why BSD still has it:
http://markmail.org/message/i5oir4jhmkopjzy5
...basically just legacy back-compat. So it's fine for us to drop
it from QEMU, since we have nothing to be back-compat with.

Thanks for posting this.

I think it's not entirely correct because the cast in QTAILQ_PREV and QTAILQ_FOREACH_REVERSE does not look like valid ANSI C. No matter how hard I look I admit I cannot figure out how it works, but anyway I suspect it can be changed to ANSI C using typeof if one was bitten by it. So removing QCIRCLEQ is not a bad idea anyway.

BTW, NetBSD also has some STAILQ which looks entirely the same as SIMPLEQ.

Paolo



reply via email to

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