Le samedi 07 mai 2011 à 20:32 +0200, Eric Dumazet a écrit :
Also you could patch synchronize_sched() itself instead of
synchronize_net()
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index dd4aea8..4af6e10 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1518,6 +1518,7 @@ EXPORT_SYMBOL_GPL(call_rcu_bh);
void synchronize_sched(void)
{
struct rcu_synchronize rcu;
+ ktime_t time_start = ktime_get();
if (rcu_blocking_is_gp())
return;@@ -1529,6 +1530,7 @@ void synchronize_sched(void)
/* Wait for it. */
wait_for_completion(&rcu.completion);
destroy_rcu_head_on_stack(&rcu.head);
+ pr_err("synchronize_rcu() in %lld us\n", ktime_us_delta(ktime_get(), time_start));
}
EXPORT_SYMBOL_GPL(synchronize_sched);