|
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
[Prev in Thread] | Current Thread | [Next in Thread] |