diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/libxc/xc_linux.c | 9 | ||||
-rw-r--r-- | tools/libxc/xc_solaris.c | 9 | ||||
-rw-r--r-- | tools/libxc/xenctrl.h | 16 |
3 files changed, 31 insertions, 3 deletions
diff --git a/tools/libxc/xc_linux.c b/tools/libxc/xc_linux.c index a70307a542..fa4927aafa 100644 --- a/tools/libxc/xc_linux.c +++ b/tools/libxc/xc_linux.c @@ -250,6 +250,15 @@ int xc_evtchn_notify(int xce_handle, evtchn_port_t port) return ioctl(xce_handle, IOCTL_EVTCHN_NOTIFY, ¬ify); } +evtchn_port_t xc_evtchn_bind_unbound_port(int xce_handle, int domid) +{ + struct ioctl_evtchn_bind_unbound_port bind; + + bind.remote_domain = domid; + + return ioctl(xce_handle, IOCTL_EVTCHN_BIND_UNBOUND_PORT, &bind); +} + evtchn_port_t xc_evtchn_bind_interdomain(int xce_handle, int domid, evtchn_port_t remote_port) { diff --git a/tools/libxc/xc_solaris.c b/tools/libxc/xc_solaris.c index 902de64fa4..889db6396d 100644 --- a/tools/libxc/xc_solaris.c +++ b/tools/libxc/xc_solaris.c @@ -165,6 +165,15 @@ int xc_evtchn_notify(int xce_handle, evtchn_port_t port) return ioctl(xce_handle, IOCTL_EVTCHN_NOTIFY, ¬ify); } +evtchn_port_t xc_evtchn_bind_unbound_port(int xce_handle, int domid) +{ + struct ioctl_evtchn_bind_unbound_port bind; + + bind.remote_domain = domid; + + return ioctl(xce_handle, IOCTL_EVTCHN_BIND_UNBOUND_PORT, &bind); +} + evtchn_port_t xc_evtchn_bind_interdomain(int xce_handle, int domid, evtchn_port_t remote_port) { diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index c646d18ea8..3904cede84 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -382,6 +382,10 @@ int xc_sched_credit_domain_get(int xc_handle, * This function allocates an unbound port. Ports are named endpoints used for * interdomain communication. This function is most useful in opening a * well-known port within a domain to receive events on. + * + * NOTE: If you are allocating a *local* unbound port, you probably want to + * use xc_evtchn_bind_unbound_port(). This function is intended for allocating + * ports *only* during domain creation. * * @parm xc_handle a handle to an open hypervisor interface * @parm dom the ID of the local domain (the 'allocatee') @@ -630,6 +634,12 @@ int xc_evtchn_fd(int xce_handle); int xc_evtchn_notify(int xce_handle, evtchn_port_t port); /* + * Returns a new event port awaiting interdomain connection from the given + * domain ID, or -1 on failure, in which case errno will be set appropriately. + */ +evtchn_port_t xc_evtchn_bind_unbound_port(int xce_handle, int domid); + +/* * Returns a new event port bound to the remote port for the given domain ID, * or -1 on failure, in which case errno will be set appropriately. */ @@ -661,15 +671,15 @@ evtchn_port_t xc_evtchn_pending(int xce_handle); int xc_evtchn_unmask(int xce_handle, evtchn_port_t port); int xc_hvm_set_pci_intx_level( - int xce_handle, domid_t dom, + int xc_handle, domid_t dom, uint8_t domain, uint8_t bus, uint8_t device, uint8_t intx, unsigned int level); int xc_hvm_set_isa_irq_level( - int xce_handle, domid_t dom, + int xc_handle, domid_t dom, uint8_t isa_irq, unsigned int level); int xc_hvm_set_pci_link_route( - int xce_handle, domid_t dom, uint8_t link, uint8_t isa_irq); + int xc_handle, domid_t dom, uint8_t link, uint8_t isa_irq); #endif |