/* This function must be called with hardirqs disabled. It is normally invoked from the scheduling-clock interrupt. If rcu_pending returns false, there is no point in invoking rcu_check_callbacks().  */
void rcu_check_callbacks(int cpu, int user)
/* This function must be called with hardirqs disabled. It is normally invoked from the scheduling-clock interrupt. If rcu_pending returns false, there is no point in invoking rcu_check_callbacks().  */
void rcu_check_callbacks(int cpu, int user)
{
	if (!rcu_pending(cpu))
		return;
	if (user ||
	    (idle_cpu(cpu) && rcu_scheduler_active &&
	     !in_softirq() && hardirq_count() <= (1 << HARDIRQ_SHIFT))) {
		rcu_sched_qs(cpu);
		rcu_bh_qs(cpu);
	} else if (!in_softirq()) {
		rcu_bh_qs(cpu);
	}
	rcu_preempt_check_callbacks(cpu);
	raise_softirq(RCU_SOFTIRQ);
}