mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
hw/xen: Add backend implementation of interdomain event channel support
The provides the QEMU side of interdomain event channels, allowing events to be sent to/from the guest. The API mirrors libxenevtchn, and in time both this and the real Xen one will be available through ops structures so that the PV backend drivers can use the correct one as appropriate. For now, this implementation can be used directly by our XenStore which will be for emulated mode only. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org>
This commit is contained in:
parent
c6623cc3e7
commit
794fba23a5
2 changed files with 352 additions and 7 deletions
|
@ -14,6 +14,8 @@
|
|||
|
||||
#include "hw/sysbus.h"
|
||||
|
||||
typedef uint32_t evtchn_port_t;
|
||||
|
||||
void xen_evtchn_create(void);
|
||||
int xen_evtchn_soft_reset(void);
|
||||
int xen_evtchn_set_callback_param(uint64_t param);
|
||||
|
@ -22,6 +24,23 @@ void xen_evtchn_set_callback_level(int level);
|
|||
|
||||
int xen_evtchn_set_port(uint16_t port);
|
||||
|
||||
/*
|
||||
* These functions mirror the libxenevtchn library API, providing the QEMU
|
||||
* backend side of "interdomain" event channels.
|
||||
*/
|
||||
struct xenevtchn_handle;
|
||||
struct xenevtchn_handle *xen_be_evtchn_open(void);
|
||||
int xen_be_evtchn_bind_interdomain(struct xenevtchn_handle *xc, uint32_t domid,
|
||||
evtchn_port_t guest_port);
|
||||
int xen_be_evtchn_unbind(struct xenevtchn_handle *xc, evtchn_port_t port);
|
||||
int xen_be_evtchn_close(struct xenevtchn_handle *xc);
|
||||
int xen_be_evtchn_fd(struct xenevtchn_handle *xc);
|
||||
int xen_be_evtchn_notify(struct xenevtchn_handle *xc, evtchn_port_t port);
|
||||
int xen_be_evtchn_unmask(struct xenevtchn_handle *xc, evtchn_port_t port);
|
||||
int xen_be_evtchn_pending(struct xenevtchn_handle *xc);
|
||||
/* Apart from this which is a local addition */
|
||||
int xen_be_evtchn_get_guest_port(struct xenevtchn_handle *xc);
|
||||
|
||||
struct evtchn_status;
|
||||
struct evtchn_close;
|
||||
struct evtchn_unmask;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue