On 07/28, Paul E. McKenney wrote:
>
> This commit adds a new RCU-tasks flavor of RCU, which provides
> call_rcu_tasks().  This RCU flavor's quiescent states are voluntary
> context switch (not preemption!), userspace execution, and the idle loop.
> Note that unlike other RCU flavors, these quiescent states occur in tasks,
> not necessarily CPUs.  Includes fixes from Steven Rostedt.

I still hope I will read this series later. Not that I really hope I will
understand it ;)

Just one question for now,

> +static int __noreturn rcu_tasks_kthread(void *arg)
> +{
> +     unsigned long flags;
> +     struct task_struct *g, *t;
> +     struct rcu_head *list;
> +     struct rcu_head *next;
> +
> +     /* FIXME: Add housekeeping affinity. */
> +
> +     /*
> +      * Each pass through the following loop makes one check for
> +      * newly arrived callbacks, and, if there are some, waits for
> +      * one RCU-tasks grace period and then invokes the callbacks.
> +      * This loop is terminated by the system going down.  ;-)
> +      */
> +     for (;;) {
> +
> +             /* Pick up any new callbacks. */
> +             raw_spin_lock_irqsave(&rcu_tasks_cbs_lock, flags);
> +             smp_mb__after_unlock_lock(); /* Enforce GP memory ordering. */
> +             list = rcu_tasks_cbs_head;
> +             rcu_tasks_cbs_head = NULL;
> +             rcu_tasks_cbs_tail = &rcu_tasks_cbs_head;
> +             raw_spin_unlock_irqrestore(&rcu_tasks_cbs_lock, flags);
> +
> +             /* If there were none, wait a bit and start over. */
> +             if (!list) {
> +                     schedule_timeout_interruptible(HZ);
> +                     flush_signals(current);

Why? And I see more flush_signals() in the current kernel/rcu/ code. Unless
a kthread does allow_signal() it can't have a pending signal?

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to