#include <linux/module.h>
#include <linux/percpu.h>
#include <linux/rcupdate.h>
+#include <linux/rculist.h>
#include <linux/smp.h>
static DEFINE_PER_CPU(struct call_single_queue, call_single_queue);
spinlock_t lock;
};
-void __cpuinit init_call_single_data(void)
+static int __cpuinit init_call_single_data(void)
{
int i;
spin_lock_init(&q->lock);
INIT_LIST_HEAD(&q->list);
}
+ return 0;
}
+early_initcall(init_call_single_data);
static void csd_flag_wait(struct call_single_data *data)
{
return 0;
else if (num_cpus == 1) {
cpu = first_cpu(mask);
- return smp_call_function_single(cpu, func, info, 0, wait);
+ return smp_call_function_single(cpu, func, info, wait);
}
if (!wait) {
if (!data) {
data = &d;
data->csd.flags = CSD_FLAG_WAIT;
+ wait = 1;
}
spin_lock_init(&data->lock);