aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/libxc/xc_linux.c9
-rw-r--r--tools/libxc/xc_solaris.c9
-rw-r--r--tools/libxc/xenctrl.h16
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, &notify);
}
+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, &notify);
}
+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