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-devel

[Xen-devel] [PATCH 2/3] minios: cleanup events.c [resend]

To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 2/3] minios: cleanup events.c [resend]
From: Rolf Neugebauer <rolf.neugebauer@xxxxxxxxxxxxx>
Date: Mon, 02 Mar 2009 10:28:07 +0000
Delivery-date: Mon, 02 Mar 2009 02:29:52 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <499D9F3B.4090907@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <499D9F3B.4090907@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.12 (X11/20080226)
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>
---

diff -r 35577e8fb3fe extras/mini-os/events.c
--- a/extras/mini-os/events.c   Thu Feb 19 16:39:02 2009 +0000
+++ b/extras/mini-os/events.c   Thu Feb 19 16:41:22 2009 +0000
@@ -42,19 +42,23 @@
     int cpu = 0;
     shared_info_t *s = HYPERVISOR_shared_info;
     vcpu_info_t   *vcpu_info = &s->vcpu_info[cpu];
+    int rc;
 
-    for (i = 0; i < NR_EVS; i++)
+    for ( i = 0; i < NR_EVS; i++ )
     {
-        if (i == start_info.console.domU.evtchn ||
-            i == start_info.store_evtchn)
+        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 @@
 
     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 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 )
 {
        struct evtchn_close close;
+    int rc;
 
-       if (ev_actions[port].handler == default_handler)
+       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 @@
        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 )
+       if ( (rc = HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &op)) != 0 )
        {
-               printk("Failed to bind virtual IRQ %d\n", virq);
+               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 )
+       if ( (rc = HYPERVISOR_event_channel_op(EVTCHNOP_bind_pirq, &op)) != 0 )
        {
-               printk("Failed to bind physical IRQ %d\n", pirq);
+               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 @@
     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, 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 @@
                            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-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 2/3] minios: cleanup events.c [resend], Rolf Neugebauer <=