xref: /openbmc/linux/include/xen/events.h (revision e46cdb66)
1e46cdb66SJeremy Fitzhardinge #ifndef _XEN_EVENTS_H
2e46cdb66SJeremy Fitzhardinge #define _XEN_EVENTS_H
3e46cdb66SJeremy Fitzhardinge 
4e46cdb66SJeremy Fitzhardinge #include <linux/irq.h>
5e46cdb66SJeremy Fitzhardinge 
6e46cdb66SJeremy Fitzhardinge int bind_evtchn_to_irqhandler(unsigned int evtchn,
7e46cdb66SJeremy Fitzhardinge 			      irqreturn_t (*handler)(int, void *),
8e46cdb66SJeremy Fitzhardinge 			      unsigned long irqflags, const char *devname,
9e46cdb66SJeremy Fitzhardinge 			      void *dev_id);
10e46cdb66SJeremy Fitzhardinge int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu,
11e46cdb66SJeremy Fitzhardinge 			    irqreturn_t (*handler)(int, void *),
12e46cdb66SJeremy Fitzhardinge 			    unsigned long irqflags, const char *devname, void *dev_id);
13e46cdb66SJeremy Fitzhardinge 
14e46cdb66SJeremy Fitzhardinge /*
15e46cdb66SJeremy Fitzhardinge  * Common unbind function for all event sources. Takes IRQ to unbind from.
16e46cdb66SJeremy Fitzhardinge  * Automatically closes the underlying event channel (even for bindings
17e46cdb66SJeremy Fitzhardinge  * made with bind_evtchn_to_irqhandler()).
18e46cdb66SJeremy Fitzhardinge  */
19e46cdb66SJeremy Fitzhardinge void unbind_from_irqhandler(unsigned int irq, void *dev_id);
20e46cdb66SJeremy Fitzhardinge 
21e46cdb66SJeremy Fitzhardinge static inline void notify_remote_via_evtchn(int port)
22e46cdb66SJeremy Fitzhardinge {
23e46cdb66SJeremy Fitzhardinge 	struct evtchn_send send = { .port = port };
24e46cdb66SJeremy Fitzhardinge 	(void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send);
25e46cdb66SJeremy Fitzhardinge }
26e46cdb66SJeremy Fitzhardinge 
27e46cdb66SJeremy Fitzhardinge extern void notify_remote_via_irq(int irq);
28e46cdb66SJeremy Fitzhardinge #endif	/* _XEN_EVENTS_H */
29