qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] rng: switch request queue to QSIMPLEQ


From: Amit Shah
Subject: Re: [Qemu-devel] [PATCH] rng: switch request queue to QSIMPLEQ
Date: Fri, 4 Mar 2016 14:46:40 +0530

On (Fri) 04 Mar 2016 [09:04:22], Ladi Prosek wrote:
> On Fri, Mar 4, 2016 at 7:27 AM, Amit Shah <address@hidden> wrote:
> > On (Thu) 03 Mar 2016 [14:16:11], Ladi Prosek wrote:
> >> QSIMPLEQ supports appending to tail in O(1) and is intrusive so
> >> it doesn't require extra memory allocations for the bookkeeping
> >> data.
> >>
> >> Suggested-by: Paolo Bonzini <address@hidden>
> >> Signed-off-by: Ladi Prosek <address@hidden>
> >
> >> @@ -83,24 +83,27 @@ static void rng_backend_free_request(RngRequest *req)
> >>
> >>  static void rng_backend_free_requests(RngBackend *s)
> >>  {
> >> -    GSList *i;
> >> +    RngRequest *req, *next;
> >>
> >> -    for (i = s->requests; i; i = i->next) {
> >> -        rng_backend_free_request(i->data);
> >> +    QSIMPLEQ_FOREACH_SAFE(req, &s->requests, next, next) {
> >> +        rng_backend_free_request(req);
> >>      }
> >>
> >> -    g_slist_free(s->requests);
> >> -    s->requests = NULL;
> >> +    QSIMPLEQ_INIT(&s->requests);
> >>  }
> >
> > This init here isn't necessary, the accessors for the queue will take
> > care of this.
> 
> We are basically purging the queue here and we want to leave it in a
> consistent state. Without the QSIMPLEQ_INIT the queue head would
> become a pair of dangling pointers. Let me know if I misunderstood
> your comment.

QSIMPLEQ_REMOVE does take care to assign NULL, so future
QSIMPLEQ_EMPTY, QSIMPLEQ_FIRST, etc., calls work just fine.

                Amit



reply via email to

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