linux/include/xen/events.h
<<
>>
Prefs
   1#ifndef _XEN_EVENTS_H
   2#define _XEN_EVENTS_H
   3
   4#include <linux/interrupt.h>
   5
   6#include <xen/interface/event_channel.h>
   7#include <asm/xen/hypercall.h>
   8
   9enum ipi_vector {
  10        XEN_RESCHEDULE_VECTOR,
  11        XEN_CALL_FUNCTION_VECTOR,
  12
  13        XEN_NR_IPIS,
  14};
  15
  16int bind_evtchn_to_irq(unsigned int evtchn);
  17int bind_evtchn_to_irqhandler(unsigned int evtchn,
  18                              irq_handler_t handler,
  19                              unsigned long irqflags, const char *devname,
  20                              void *dev_id);
  21int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
  22                            irq_handler_t handler,
  23                            unsigned long irqflags, const char *devname,
  24                            void *dev_id);
  25int bind_ipi_to_irqhandler(enum ipi_vector ipi,
  26                           unsigned int cpu,
  27                           irq_handler_t handler,
  28                           unsigned long irqflags,
  29                           const char *devname,
  30                           void *dev_id);
  31
  32/*
  33 * Common unbind function for all event sources. Takes IRQ to unbind from.
  34 * Automatically closes the underlying event channel (even for bindings
  35 * made with bind_evtchn_to_irqhandler()).
  36 */
  37void unbind_from_irqhandler(unsigned int irq, void *dev_id);
  38
  39void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector);
  40
  41static inline void notify_remote_via_evtchn(int port)
  42{
  43        struct evtchn_send send = { .port = port };
  44        (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send);
  45}
  46
  47extern void notify_remote_via_irq(int irq);
  48#endif  /* _XEN_EVENTS_H */
  49