Only in xen-unstable/extras/mini-os/console: console.o
diff -ur oxen-unstable/extras/mini-os/console/xencons_ring.c xen-unstable/extras/mini-os/console/xencons_ring.c
--- oxen-unstable/extras/mini-os/console/xencons_ring.c	2006-07-24 01:09:39.000000000 -0400
+++ xen-unstable/extras/mini-os/console/xencons_ring.c	2006-07-26 05:22:01.000000000 -0400
@@ -53,7 +53,7 @@
 
 
 
-static void handle_input(int port, struct pt_regs *regs, void *ign)
+static void handle_input(evtchn_port_t port, struct pt_regs *regs, void *ign)
 {
 	struct xencons_interface *intf = xencons_interface();
 	XENCONS_RING_IDX cons, prod;
Only in xen-unstable/extras/mini-os/console: xencons_ring.o
diff -ur oxen-unstable/extras/mini-os/events.c xen-unstable/extras/mini-os/events.c
--- oxen-unstable/extras/mini-os/events.c	2006-07-24 01:09:39.000000000 -0400
+++ xen-unstable/extras/mini-os/events.c	2006-07-26 05:31:36.000000000 -0400
@@ -26,20 +26,20 @@
 
 /* this represents a event handler. Chaining or sharing is not allowed */
 typedef struct _ev_action_t {
-	void (*handler)(int, struct pt_regs *, void *);
+	evtchn_handler_t handler;
 	void *data;
     u32 count;
 } ev_action_t;
 
 
 static ev_action_t ev_actions[NR_EVS];
-void default_handler(int port, struct pt_regs *regs, void *data);
+void default_handler(evtchn_port_t port, struct pt_regs *regs, void *data);
 
 
 /*
  * Demux events to different handlers.
  */
-int do_event(u32 port, struct pt_regs *regs)
+int do_event(evtchn_port_t port, struct pt_regs *regs)
 {
     ev_action_t  *action;
     if (port >= NR_EVS) {
@@ -60,8 +60,8 @@
 
 }
 
-int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *, void *),
-				 void *data )
+evtchn_port_t bind_evtchn(evtchn_port_t port, evtchn_handler_t handler, 
+						  void *data)
 {
  	if(ev_actions[port].handler != default_handler)
         printk("WARN: Handler for port %d already registered, replacing\n",
@@ -77,7 +77,7 @@
 	return port;
 }
 
-void unbind_evtchn( u32 port )
+void unbind_evtchn(evtchn_port_t port)
 {
 	if (ev_actions[port].handler == default_handler)
 		printk("WARN: No handler for port %d when unbinding\n", port);
@@ -86,8 +86,7 @@
 	ev_actions[port].data = NULL;
 }
 
-int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *, void *data),
-			   void *data)
+int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
 {
 	evtchn_op_t op;
 
@@ -105,11 +104,6 @@
 	return 0;
 }
 
-void unbind_virq( u32 port )
-{
-	unbind_evtchn(port);
-}
-
 #if defined(__x86_64__)
 /* Allocate 4 pages for the irqstack */
 #define STACK_PAGES 4
@@ -142,32 +136,45 @@
     }
 }
 
-void default_handler(int port, struct pt_regs *regs, void *ignore)
+void default_handler(evtchn_port_t port, struct pt_regs *regs, void *ignore)
 {
     printk("[Port %d] - event received\n", port);
 }
 
+/* Create a port available to the pal for exchanging notifications.
+   Returns the result of the hypervisor call. */
+
 /* Unfortunate confusion of terminology: the port is unbound as far
    as Xen is concerned, but we automatically bind a handler to it
    from inside mini-os. */
-int evtchn_alloc_unbound(void (*handler)(int, struct pt_regs *regs,
-										 void *data),
-						 void *data)
-{
-	u32 port;
-	evtchn_op_t op;
-	int err;
 
-	op.cmd = EVTCHNOP_alloc_unbound;
-	op.u.alloc_unbound.dom = DOMID_SELF;
-	op.u.alloc_unbound.remote_dom = 0;
-
-	err = HYPERVISOR_event_channel_op(&op);
-	if (err) {
-		printk("Failed to alloc unbound evtchn: %d.\n", err);
-		return -1;
-	}
-	port = op.u.alloc_unbound.port;
-	bind_evtchn(port, handler, data);
-	return port;
+int evtchn_alloc_unbound(domid_t pal, evtchn_handler_t handler,
+						 void *data, evtchn_port_t *port)
+{
+    evtchn_op_t op;
+    op.cmd = EVTCHNOP_alloc_unbound;
+    op.u.alloc_unbound.dom = DOMID_SELF;
+    op.u.alloc_unbound.remote_dom = pal;
+    int err = HYPERVISOR_event_channel_op(&op);
+    if (err)
+		return err;
+    *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_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;
+    *local_port = op.u.bind_interdomain.local_port;
+    return err;
 }
Only in xen-unstable/extras/mini-os: events.o
diff -ur oxen-unstable/extras/mini-os/gnttab.c xen-unstable/extras/mini-os/gnttab.c
--- oxen-unstable/extras/mini-os/gnttab.c	2006-07-24 01:09:39.000000000 -0400
+++ xen-unstable/extras/mini-os/gnttab.c	2006-07-26 05:22:01.000000000 -0400
@@ -137,6 +137,20 @@
     return gref;
 }
 
+static const char *gnttabop_error_msgs[] = GNTTABOP_error_msgs;
+
+static const size_t gnttabop_error_size = ARRAY_SIZE(gnttabop_error_msgs);
+
+const char *
+gnttabop_error(int16_t status)
+{
+    status = -status;
+    if (status < 0 || status >= gnttabop_error_size)
+	return "bad status";
+    else
+        return gnttabop_error_msgs[status];
+}
+
 void
 init_gnttab(void)
 {
@@ -156,3 +170,10 @@
     gnttab_table = map_frames(frames, NR_GRANT_FRAMES);
     printk("gnttab_table mapped at %p.\n", gnttab_table);
 }
+
+/*
+ * Local variables:
+ * mode: C
+ * c-basic-offset: 4
+ * End:
+ */
Only in xen-unstable/extras/mini-os: gnttab.o
Only in xen-unstable/extras/mini-os: hypervisor.o
diff -ur oxen-unstable/extras/mini-os/include/events.h xen-unstable/extras/mini-os/include/events.h
--- oxen-unstable/extras/mini-os/include/events.h	2006-07-24 01:09:39.000000000 -0400
+++ xen-unstable/extras/mini-os/include/events.h	2006-07-26 05:23:21.000000000 -0400
@@ -22,20 +22,22 @@
 #include<traps.h>
 #include <xen/event_channel.h>
 
+typedef void (*evtchn_handler_t)(evtchn_port_t, struct pt_regs *, void *);
+
 /* prototypes */
-int do_event(u32 port, struct pt_regs *regs);
-int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *, void *data),
-			   void *data);
-int bind_evtchn( u32 virq, void (*handler)(int, struct pt_regs *, void *data),
-				 void *data );
-void unbind_evtchn( u32 port );
+int do_event(evtchn_port_t port, struct pt_regs *regs);
+int bind_virq(uint32_t virq, evtchn_handler_t handler, void *data);
+evtchn_port_t bind_evtchn(evtchn_port_t virq, evtchn_handler_t handler, 
+						  void *data);
+void unbind_evtchn(evtchn_port_t port);
 void init_events(void);
-void unbind_virq( u32 port );
-int evtchn_alloc_unbound(void (*handler)(int, struct pt_regs *regs,
-										 void *data),
-						 void *data);
+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_port_t *local_port);
 
-static inline int notify_remote_via_evtchn(int port)
+static inline int notify_remote_via_evtchn(evtchn_port_t port)
 {
     evtchn_op_t op;
     op.cmd = EVTCHNOP_send;
Only in xen-unstable/extras/mini-os/include: events.h~
diff -ur oxen-unstable/extras/mini-os/include/gnttab.h xen-unstable/extras/mini-os/include/gnttab.h
--- oxen-unstable/extras/mini-os/include/gnttab.h	2006-07-24 01:09:39.000000000 -0400
+++ xen-unstable/extras/mini-os/include/gnttab.h	2006-07-26 05:22:01.000000000 -0400
@@ -10,5 +10,6 @@
 grant_ref_t gnttab_grant_transfer(domid_t domid, unsigned long pfn);
 unsigned long gnttab_end_transfer(grant_ref_t gref);
 int gnttab_end_access(grant_ref_t ref);
+const char *gnttabop_error(int16_t status);
 
 #endif /* !__GNTTAB_H__ */
Only in xen-unstable/extras/mini-os/include: xen
Only in xen-unstable/extras/mini-os: kernel.o
Only in xen-unstable/extras/mini-os/lib: math.o
Only in xen-unstable/extras/mini-os/lib: printf.o
Only in xen-unstable/extras/mini-os/lib: string.o
Only in xen-unstable/extras/mini-os/lib: xmalloc.o
Only in xen-unstable/extras/mini-os: libminios.a
Only in xen-unstable/extras/mini-os: mini-os.elf
Only in xen-unstable/extras/mini-os: mini-os.gz
Only in xen-unstable/extras/mini-os: mm.o
Only in xen-unstable/extras/mini-os: sched.o
diff -ur oxen-unstable/extras/mini-os/time.c xen-unstable/extras/mini-os/time.c
--- oxen-unstable/extras/mini-os/time.c	2006-07-24 01:09:41.000000000 -0400
+++ xen-unstable/extras/mini-os/time.c	2006-07-26 05:22:01.000000000 -0400
@@ -215,7 +215,7 @@
 /*
  * Just a dummy 
  */
-static void timer_handler(int ev, struct pt_regs *regs, void *ign)
+static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
 {
     static int i;
 
Only in xen-unstable/extras/mini-os: time.o
Only in xen-unstable/extras/mini-os: traps.o
Only in xen-unstable/extras/mini-os: x86_32.o
diff -ur oxen-unstable/extras/mini-os/xenbus/xenbus.c xen-unstable/extras/mini-os/xenbus/xenbus.c
--- oxen-unstable/extras/mini-os/xenbus/xenbus.c	2006-07-24 01:09:41.000000000 -0400
+++ xen-unstable/extras/mini-os/xenbus/xenbus.c	2006-07-26 05:22:01.000000000 -0400
@@ -112,7 +112,8 @@
     }
 }
 
-static void xenbus_evtchn_handler(int port, struct pt_regs *regs, void *ign)
+static void xenbus_evtchn_handler(evtchn_port_t port, struct pt_regs *regs,
+				  void *ign)
 {
     wake_up(&xb_waitq);
 }
Only in xen-unstable/extras/mini-os/xenbus: xenbus.o