# HG changeset patch
# User sos22@xxxxxxxxxxxxxxxxxxxx
# Node ID cbfced5fcdb348f23c8727305230b638b16c92dd
# Parent 97ffb7856239a937f391583e881fae695c86fb68
[MINI-OS] Add evtchn_bind_interdomain to mini-os, allowing clients to
bind to interdomain event channels.
Signed-off-by: John D. Ramsdell <ramsdell@xxxxxxxxx>
Signed-off-by: Steven Smith <sos22@xxxxxxxxx>
---
extras/mini-os/events.c | 20 ++++++++++++++++++++
extras/mini-os/include/events.h | 3 +++
2 files changed, 23 insertions(+)
diff -r 97ffb7856239 -r cbfced5fcdb3 extras/mini-os/events.c
--- a/extras/mini-os/events.c Fri Jul 28 14:03:54 2006 +0100
+++ b/extras/mini-os/events.c Fri Jul 28 14:05:02 2006 +0100
@@ -161,3 +161,23 @@ int evtchn_alloc_unbound(domid_t pal, ev
*port = bind_evtchn(op.u.alloc_unbound.port, handler, data);
return err;
}
+
+/* Connect to a port so as to allow the exchange of notifications with
+ the pal. Returns the result of the hypervisor call. */
+
+int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
+ evtchn_handler_t handler, void *data,
+ evtchn_port_t *local_port)
+{
+ evtchn_op_t op;
+ op.cmd = EVTCHNOP_bind_interdomain;
+ op.u.bind_interdomain.remote_dom = pal;
+ op.u.bind_interdomain.remote_port = remote_port;
+ int err = HYPERVISOR_event_channel_op(&op);
+ if (err)
+ return err;
+ evtchn_port_t port = op.u.bind_interdomain.local_port;
+ clear_evtchn(port); /* Without, handler gets invoked now! */
+ *local_port = bind_evtchn(port, handler, data);
+ return err;
+}
diff -r 97ffb7856239 -r cbfced5fcdb3 extras/mini-os/include/events.h
--- a/extras/mini-os/include/events.h Fri Jul 28 14:03:54 2006 +0100
+++ b/extras/mini-os/include/events.h Fri Jul 28 14:05:02 2006 +0100
@@ -33,6 +33,9 @@ void init_events(void);
void init_events(void);
int evtchn_alloc_unbound(domid_t pal, evtchn_handler_t handler,
void *data, evtchn_port_t
*port);
+int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
+ evtchn_handler_t
handler, void *data,
+ evtchn_port_t
*local_port);
static inline int notify_remote_via_evtchn(evtchn_port_t port)
{
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|