>>> On 25.08.16 at 21:23, 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);
> +
> +
Since the per-cpu tasklets are lockfree and run only
within their own CPU context - we need a mechanism
for 'tasklet_schedule_on_cpu' from other CPUs to
insert tasklets in the destination per-cpu lists.
We use an IPI mechanism which function implements an
per-cpu 'feeding' list and a global lock.