[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/5] tasklet: Add cross CPU feeding of per-cpu tasklets.
>>> On 25.08.16 at 21:23, <konrad.wilk@xxxxxxxxxx> wrote: > +static void percpu_tasklet_feed(void *arg) > +{ > + unsigned long flags; > + struct tasklet *t; > + struct list_head *dst_list; > + struct list_head *list = &__get_cpu_var(tasklet_feeder); > + > + spin_lock_irqsave(&feeder_lock, flags); > + > + if ( list_empty(list) ) > + goto out; Instead of this, how about e.g. initializing t to NULL above and ... > + while ( !list_empty(list) ) > + { > + t = list_entry(list->next, struct tasklet, list); [Intermediate note: list_first_entry(); I guess there also was at least one such case in patch 1. Or perhaps even better list_first_entry_or_null() and then this moved into the loop condition.] > + BUG_ON(!t->is_percpu); > + list_del(&t->list); > + > + dst_list = &__get_cpu_var(softirq_list); > + list_add_tail(&t->list, dst_list); > + } > + raise_softirq(TASKLET_SOFTIRQ_PERCPU); ... making this conditional upon t not being NULL? That would at once ... > +out: ... eliminate this label, which otherwise I would have to comment on. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |