diff options
author | kmacy <kmacy@FreeBSD.org> | 2008-09-26 05:54:24 +0000 |
---|---|---|
committer | kmacy <kmacy@FreeBSD.org> | 2008-09-26 05:54:24 +0000 |
commit | ee87f9c03f3363226009b04be8739a0c94aa18ba (patch) | |
tree | 87fb843f20e48fd58b6c1af6bfc4a9cd7b17d6b4 /sys/xen/evtchn | |
parent | 65146c6fd4604a8e65ab81176157e6ccfa9b6f34 (diff) | |
download | FreeBSD-src-ee87f9c03f3363226009b04be8739a0c94aa18ba.zip FreeBSD-src-ee87f9c03f3363226009b04be8739a0c94aa18ba.tar.gz |
move ipi_pcpu to evtchn.c
Diffstat (limited to 'sys/xen/evtchn')
-rw-r--r-- | sys/xen/evtchn/evtchn.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/sys/xen/evtchn/evtchn.c b/sys/xen/evtchn/evtchn.c index de3cf0c..53b41ac 100644 --- a/sys/xen/evtchn/evtchn.c +++ b/sys/xen/evtchn/evtchn.c @@ -112,14 +112,14 @@ enum { #define index_from_irq(irq) ((uint8_t)(irq_info[irq] >> 16)) #define type_from_irq(irq) ((uint8_t)(irq_info[irq] >> 24)) -/* IRQ <-> VIRQ mapping. */ -DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]); - -/* IRQ <-> IPI mapping. */ -#ifndef NR_IPIS +/* IRQ <-> VIRQ mapping. */ +DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]) = {[0 ... NR_VIRQS-1] = -1}; + +/* IRQ <-> IPI mapping. */ +#ifndef NR_IPIS #define NR_IPIS 1 -#endif -DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]); +#endif +DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]) = {[0 ... NR_IPIS-1] = -1}; /* Bitmap indicating which PIRQs require Xen to be notified on unmask. */ static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; @@ -219,6 +219,14 @@ evtchn_do_upcall(struct trapframe *frame) } } +void +ipi_pcpu(unsigned int cpu, int vector) +{ + int irq = per_cpu(ipi_to_irq, cpu)[vector]; + + notify_remote_via_irq(irq); +} + static int find_unbound_irq(void) { |