home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / xen / events.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  57 lines

  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. #include <asm/xen/events.h>
  9.  
  10. int bind_evtchn_to_irq(unsigned int evtchn);
  11. int bind_evtchn_to_irqhandler(unsigned int evtchn,
  12.                   irq_handler_t handler,
  13.                   unsigned long irqflags, const char *devname,
  14.                   void *dev_id);
  15. int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
  16.                 irq_handler_t handler,
  17.                 unsigned long irqflags, const char *devname,
  18.                 void *dev_id);
  19. int bind_ipi_to_irqhandler(enum ipi_vector ipi,
  20.                unsigned int cpu,
  21.                irq_handler_t handler,
  22.                unsigned long irqflags,
  23.                const char *devname,
  24.                void *dev_id);
  25.  
  26. /*
  27.  * Common unbind function for all event sources. Takes IRQ to unbind from.
  28.  * Automatically closes the underlying event channel (even for bindings
  29.  * made with bind_evtchn_to_irqhandler()).
  30.  */
  31. void unbind_from_irqhandler(unsigned int irq, void *dev_id);
  32.  
  33. void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector);
  34. int resend_irq_on_evtchn(unsigned int irq);
  35. void rebind_evtchn_irq(int evtchn, int irq);
  36.  
  37. static inline void notify_remote_via_evtchn(int port)
  38. {
  39.     struct evtchn_send send = { .port = port };
  40.     (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send);
  41. }
  42.  
  43. extern void notify_remote_via_irq(int irq);
  44.  
  45. extern void xen_irq_resume(void);
  46.  
  47. /* Clear an irq's pending state, in preparation for polling on it */
  48. void xen_clear_irq_pending(int irq);
  49. void xen_set_irq_pending(int irq);
  50. bool xen_test_irq_pending(int irq);
  51.  
  52. /* Poll waiting for an irq to become pending.  In the usual case, the
  53.    irq will be disabled so it won't deliver an interrupt. */
  54. void xen_poll_irq(int irq);
  55.  
  56. #endif    /* _XEN_EVENTS_H */
  57.