aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/public/event_channel.h
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-04-05 19:30:02 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-04-05 19:30:02 +0100
commit6f1d9ff91969db563dad7f8e703b88eda7ee2c8e (patch)
tree996e86277e291f2a30c124509202f707bd88ff28 /xen/include/public/event_channel.h
parentb0a4d66a6cf065ab0a4341ba88cc75dccfbe1141 (diff)
downloadxen-6f1d9ff91969db563dad7f8e703b88eda7ee2c8e.tar.gz
xen-6f1d9ff91969db563dad7f8e703b88eda7ee2c8e.tar.bz2
xen-6f1d9ff91969db563dad7f8e703b88eda7ee2c8e.zip
Backtrack on the new interface for reserved event-channel
ports, as binding them in user space via the evtchn driver would be a pain. Instead extend VIRQs so they can be classified as 'global' or 'per vcpu'. The former can only be allocated once per guest, but can be re-bound to an arbitrary VCPU. Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/public/event_channel.h')
-rw-r--r--xen/include/public/event_channel.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/xen/include/public/event_channel.h b/xen/include/public/event_channel.h
index c556163034..f1e067b4a3 100644
--- a/xen/include/public/event_channel.h
+++ b/xen/include/public/event_channel.h
@@ -50,9 +50,13 @@ typedef struct evtchn_bind_interdomain {
* EVTCHNOP_bind_virq: Bind a local event channel to VIRQ <irq> on specified
* vcpu.
* NOTES:
- * 1. A virtual IRQ may be bound to at most one event channel per vcpu.
- * 2. The allocated event channel is bound to the specified vcpu. The binding
- * may not be changed.
+ * 1. Virtual IRQs are classified as per-vcpu or global. See the VIRQ list
+ * in xen.h for the classification of each VIRQ.
+ * 2. Global VIRQs must be allocated on VCPU0 but can subsequently be
+ * re-bound via EVTCHNOP_bind_vcpu.
+ * 3. Per-vcpu VIRQs may be bound to at most one event channel per vcpu.
+ * The allocated event channel is bound to the specified vcpu and the
+ * binding cannot be changed.
*/
#define EVTCHNOP_bind_virq 1
typedef struct evtchn_bind_virq {
@@ -152,9 +156,11 @@ typedef struct evtchn_status {
* EVTCHNOP_bind_vcpu: Specify which vcpu a channel should notify when an
* event is pending.
* NOTES:
- * 1. IPI- and VIRQ-bound channels always notify the vcpu that initialised
- * the binding. This binding cannot be changed.
- * 2. All other channels notify vcpu0 by default. This default is set when
+ * 1. IPI-bound channels always notify the vcpu specified at bind time.
+ * This binding cannot be changed.
+ * 2. Per-VCPU VIRQ channels always notify the vcpu specified at bind time.
+ * This binding cannot be changed.
+ * 3. All other channels notify vcpu0 by default. This default is set when
* the channel is allocated (a port that is freed and subsequently reused
* has its binding reset to vcpu0).
*/