WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] minios: cleanup events.c

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] minios: cleanup events.c
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 03 Mar 2009 11:10:25 -0800
Delivery-date: Tue, 03 Mar 2009 11:11:28 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1235991094 0
# Node ID 08916e5135b39a4b2fa21e501e134abfee87a4ec
# Parent  9c4a38f70b168d1f30652f099e696fa48df4b59f
minios: cleanup events.c

Don't throw away hypercall error codes. They might be useful. Also
some minor coding style cleanups.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@xxxxxxxxxxxxx>
Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
---
 extras/mini-os/events.c |   96 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 63 insertions(+), 33 deletions(-)

diff -r 9c4a38f70b16 -r 08916e5135b3 extras/mini-os/events.c
--- a/extras/mini-os/events.c   Mon Mar 02 10:50:59 2009 +0000
+++ b/extras/mini-os/events.c   Mon Mar 02 10:51:34 2009 +0000
@@ -42,19 +42,23 @@ void unbind_all_ports(void)
     int cpu = 0;
     shared_info_t *s = HYPERVISOR_shared_info;
     vcpu_info_t   *vcpu_info = &s->vcpu_info[cpu];
-
-    for (i = 0; i < NR_EVS; i++)
-    {
-        if (i == start_info.console.domU.evtchn ||
-            i == start_info.store_evtchn)
+    int rc;
+
+    for ( i = 0; i < NR_EVS; i++ )
+    {
+        if ( i == start_info.console.domU.evtchn ||
+             i == start_info.store_evtchn)
             continue;
-        if (test_and_clear_bit(i, bound_ports))
+
+        if ( test_and_clear_bit(i, bound_ports) )
         {
             struct evtchn_close close;
             printk("port %d still bound!\n", i);
             mask_evtchn(i);
             close.port = i;
-            HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
+            rc = HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
+            if ( rc )
+                printk("WARN: close_port %s failed rc=%d. ignored\n", i, rc);
             clear_evtchn(i);
         }
     }
@@ -71,8 +75,9 @@ int do_event(evtchn_port_t port, struct 
 
     clear_evtchn(port);
 
-    if (port >= NR_EVS) {
-        printk("Port number too large: %d\n", port);
+    if ( port >= NR_EVS )
+    {
+        printk("WARN: do_event(): Port number too large: %d\n", port);
         return 1;
     }
 
@@ -89,9 +94,9 @@ evtchn_port_t bind_evtchn(evtchn_port_t 
 evtchn_port_t bind_evtchn(evtchn_port_t port, evtchn_handler_t handler,
                                                  void *data)
 {
-       if(ev_actions[port].handler != default_handler)
+       if ( ev_actions[port].handler != default_handler )
         printk("WARN: Handler for port %d already registered, replacing\n",
-                               port);
+               port);
 
        ev_actions[port].data = data;
        wmb();
@@ -104,8 +109,9 @@ void unbind_evtchn(evtchn_port_t port )
 void unbind_evtchn(evtchn_port_t port )
 {
        struct evtchn_close close;
-
-       if (ev_actions[port].handler == default_handler)
+    int rc;
+
+       if ( ev_actions[port].handler == default_handler )
                printk("WARN: No handler for port %d when unbinding\n", port);
        mask_evtchn(port);
        clear_evtchn(port);
@@ -116,37 +122,43 @@ void unbind_evtchn(evtchn_port_t port )
        clear_bit(port, bound_ports);
 
        close.port = port;
-       HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
+       rc = HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
+    if ( rc )
+        printk("WARN: close_port %s failed rc=%d. ignored\n", port, rc);
+        
 }
 
 evtchn_port_t bind_virq(uint32_t virq, evtchn_handler_t handler, void *data)
 {
        evtchn_bind_virq_t op;
+    int rc;
 
        /* Try to bind the virq to a port */
        op.virq = virq;
        op.vcpu = smp_processor_id();
 
-       if ( HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op) != 0 )
-       {
-               printk("Failed to bind virtual IRQ %d\n", virq);
+       if ( (rc = HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op)) != 0 )
+       {
+               printk("Failed to bind virtual IRQ %d with rc=%d\n", virq, rc);
                return -1;
     }
     bind_evtchn(op.port, handler, data);
        return op.port;
 }
 
-evtchn_port_t bind_pirq(uint32_t pirq, int will_share, evtchn_handler_t 
handler, void *data)
+evtchn_port_t bind_pirq(uint32_t pirq, int will_share,
+                        evtchn_handler_t handler, void *data)
 {
        evtchn_bind_pirq_t op;
+    int rc;
 
        /* Try to bind the pirq to a port */
        op.pirq = pirq;
        op.flags = will_share ? BIND_PIRQ__WILL_SHARE : 0;
 
-       if ( HYPERVISOR_event_channel_op(EVTCHNOP_bind_pirq, &op) != 0 )
-       {
-               printk("Failed to bind physical IRQ %d\n", pirq);
+       if ( (rc = HYPERVISOR_event_channel_op(EVTCHNOP_bind_pirq, &op)) != 0 )
+       {
+               printk("Failed to bind physical IRQ %d with rc=%d\n", pirq, rc);
                return -1;
        }
        bind_evtchn(op.port, handler, data);
@@ -173,7 +185,8 @@ void init_events(void)
     asm volatile("movl %0,%%fs ; movl %0,%%gs" :: "r" (0));
     wrmsrl(0xc0000101, &cpu0_pda); /* 0xc0000101 is MSR_GS_BASE */
     cpu0_pda.irqcount = -1;
-    cpu0_pda.irqstackptr = (void*) (((unsigned long)irqstack + 2 * STACK_SIZE) 
& ~(STACK_SIZE - 1));
+    cpu0_pda.irqstackptr = (void*) (((unsigned long)irqstack + 2 * STACK_SIZE)
+                                    & ~(STACK_SIZE - 1));
 #endif
     /* initialize event handler */
     for ( i = 0; i < NR_EVS; i++ )
@@ -207,15 +220,19 @@ int evtchn_alloc_unbound(domid_t pal, ev
 int evtchn_alloc_unbound(domid_t pal, evtchn_handler_t handler,
                                                 void *data, evtchn_port_t 
*port)
 {
-    int err;
+    int rc;
+
     evtchn_alloc_unbound_t op;
     op.dom = DOMID_SELF;
     op.remote_dom = pal;
-    err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
-    if (err)
-               return err;
+    rc = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
+    if ( rc )
+    {
+        printk("ERROR: alloc_unbound failed with rc=%d", rc);
+               return rc;
+    }
     *port = bind_evtchn(op.port, handler, data);
-    return err;
+    return rc;
 }
 
 /* Connect to a port so as to allow the exchange of notifications with
@@ -225,15 +242,28 @@ int evtchn_bind_interdomain(domid_t pal,
                            evtchn_handler_t handler, void *data,
                            evtchn_port_t *local_port)
 {
-    int err;
+    int rc;
     evtchn_port_t port;
     evtchn_bind_interdomain_t op;
     op.remote_dom = pal;
     op.remote_port = remote_port;
-    err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, &op);
-    if (err)
-               return err;
+    rc = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, &op);
+    if ( rc )
+    {
+        printk("ERROR: bind_interdomain failed with rc=%d", rc);
+               return rc;
+    }
     port = op.local_port;
     *local_port = bind_evtchn(port, handler, data);
-    return err;
-}
+    return rc;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] minios: cleanup events.c, Xen patchbot-unstable <=