/* This primitive provides the guarantees made by the (now removed) synchronize_kernel() API. In contrast, synchronize_rcu() only guarantees that rcu_read_lock() sections will have completed. In "classic RCU", these two guarantees happen to be one and the same, but can differ in realtime RCU implementations.  */
void synchronize_sched(void)
/* This primitive provides the guarantees made by the (now removed) synchronize_kernel() API. In contrast, synchronize_rcu() only guarantees that rcu_read_lock() sections will have completed. In "classic RCU", these two guarantees happen to be one and the same, but can differ in realtime RCU implementations.  */
void synchronize_sched(void)
{
	struct rcu_synchronize rcu;
	if (rcu_blocking_is_gp())
		return;
	init_completion(&rcu.completion);
	call_rcu_sched(&rcu.head, wakeme_after_rcu);
	wait_for_completion(&rcu.completion);
}