2012-04-21 00:11:04 +08:00
|
|
|
#ifndef _XEN_SMP_H
|
|
|
|
|
2016-08-04 01:22:27 +08:00
|
|
|
#ifdef CONFIG_SMP
|
2012-04-21 00:11:04 +08:00
|
|
|
extern void xen_send_IPI_mask(const struct cpumask *mask,
|
|
|
|
int vector);
|
|
|
|
extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask,
|
|
|
|
int vector);
|
|
|
|
extern void xen_send_IPI_allbutself(int vector);
|
|
|
|
extern void xen_send_IPI_all(int vector);
|
|
|
|
extern void xen_send_IPI_self(int vector);
|
|
|
|
|
2016-08-04 01:22:27 +08:00
|
|
|
extern int xen_smp_intr_init(unsigned int cpu);
|
|
|
|
extern void xen_smp_intr_free(unsigned int cpu);
|
2017-03-15 01:35:42 +08:00
|
|
|
int xen_smp_intr_init_pv(unsigned int cpu);
|
|
|
|
void xen_smp_intr_free_pv(unsigned int cpu);
|
2016-08-04 01:22:27 +08:00
|
|
|
|
2017-06-03 08:06:02 +08:00
|
|
|
void xen_smp_cpus_done(unsigned int max_cpus);
|
|
|
|
|
2017-03-15 01:35:45 +08:00
|
|
|
void xen_smp_send_reschedule(int cpu);
|
|
|
|
void xen_smp_send_call_function_ipi(const struct cpumask *mask);
|
|
|
|
void xen_smp_send_call_function_single_ipi(int cpu);
|
2017-03-15 01:35:46 +08:00
|
|
|
|
|
|
|
struct xen_common_irq {
|
|
|
|
int irq;
|
|
|
|
char *name;
|
|
|
|
};
|
2016-08-04 01:22:27 +08:00
|
|
|
#else /* CONFIG_SMP */
|
|
|
|
|
|
|
|
static inline int xen_smp_intr_init(unsigned int cpu)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
static inline void xen_smp_intr_free(unsigned int cpu) {}
|
2017-03-15 01:35:42 +08:00
|
|
|
|
|
|
|
static inline int xen_smp_intr_init_pv(unsigned int cpu)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
static inline void xen_smp_intr_free_pv(unsigned int cpu) {}
|
2016-08-04 01:22:27 +08:00
|
|
|
#endif /* CONFIG_SMP */
|
|
|
|
|
2012-04-21 00:11:04 +08:00
|
|
|
#endif
|