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] lsevtchn: Improve this evtchn reporting t

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] lsevtchn: Improve this evtchn reporting tool.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 06 Sep 2008 01:40:18 -0700
Delivery-date: Sat, 06 Sep 2008 01:40:58 -0700
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 1220612195 -3600
# Node ID be573a356c90c0344a1986e760e54f6017f1fada
# Parent  1a785d213573ebbbfb94947de16ed4e34618e727
lsevtchn: Improve this evtchn reporting tool.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 tools/libxc/xc_evtchn.c  |   15 ++------------
 tools/libxc/xenctrl.h    |    6 ++---
 tools/xcutils/lsevtchn.c |   48 ++++++++++++++++++++++++++---------------------
 3 files changed, 33 insertions(+), 36 deletions(-)

diff -r 1a785d213573 -r be573a356c90 tools/libxc/xc_evtchn.c
--- a/tools/libxc/xc_evtchn.c   Fri Sep 05 11:18:20 2008 +0100
+++ b/tools/libxc/xc_evtchn.c   Fri Sep 05 11:56:35 2008 +0100
@@ -59,17 +59,8 @@ int xc_evtchn_reset(int xc_handle,
     return do_evtchn_op(xc_handle, EVTCHNOP_reset, &arg, sizeof(arg), 0);
 }
 
-int xc_evtchn_status(int xc_handle,
-                     uint32_t dom,
-                     uint32_t port)
+int xc_evtchn_status(int xc_handle, xc_evtchn_status_t *status)
 {
-    int rc;
-    struct evtchn_status arg = { .dom = (domid_t)dom,
-                                 .port = (evtchn_port_t)port };
-
-    rc = do_evtchn_op(xc_handle, EVTCHNOP_status, &arg, sizeof(arg), 1);
-    if ( rc == 0 )
-        rc = arg.status;
-
-    return rc;
+    return do_evtchn_op(xc_handle, EVTCHNOP_status, status,
+                        sizeof(*status), 1);
 }
diff -r 1a785d213573 -r be573a356c90 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Fri Sep 05 11:18:20 2008 +0100
+++ b/tools/libxc/xenctrl.h     Fri Sep 05 11:56:35 2008 +0100
@@ -502,9 +502,9 @@ xc_evtchn_alloc_unbound(int xc_handle,
 
 int xc_evtchn_reset(int xc_handle,
                     uint32_t dom);
-int xc_evtchn_status(int xc_handle,
-                     uint32_t dom,
-                     uint32_t port);
+
+typedef struct evtchn_status xc_evtchn_status_t;
+int xc_evtchn_status(int xc_handle, xc_evtchn_status_t *status);
 
 /*
  * Return a handle to the event channel driver, or -1 on failure, in which case
diff -r 1a785d213573 -r be573a356c90 tools/xcutils/lsevtchn.c
--- a/tools/xcutils/lsevtchn.c  Fri Sep 05 11:18:20 2008 +0100
+++ b/tools/xcutils/lsevtchn.c  Fri Sep 05 11:56:35 2008 +0100
@@ -8,49 +8,55 @@
 #include <xenctrl.h>
 #include <xenguest.h>
 
-int
-main(int argc, char **argv)
+int main(int argc, char **argv)
 {
-    int xc_fd;
-    int domid = 0, port = 0, status;
-    const char *msg;
+    int xc_fd, domid, port, rc;
+    xc_evtchn_status_t status;
 
-    if ( argc > 1 )
-        domid = strtol(argv[1], NULL, 10);
+    domid = (argc > 1) ? strtol(argv[1], NULL, 10) : 0;
 
     xc_fd = xc_interface_open();
     if ( xc_fd < 0 )
         errx(1, "failed to open control interface");
 
-    while ( (status = xc_evtchn_status(xc_fd, domid, port)) >= 0 )
+    for ( port = 0; ; port++ )
     {
-        switch ( status )
+        status.dom = domid;
+        status.port = port;
+        rc = xc_evtchn_status(xc_fd, &status);
+        if ( rc < 0 )
+            break;
+
+        if ( status.status == EVTCHNSTAT_closed )
+            continue;
+
+        printf("%4d: VCPU %u: ", port, status.vcpu);
+
+        switch ( status.status )
         {
-        case EVTCHNSTAT_closed:
-            msg = "Channel is not in use.";
-            break;
         case EVTCHNSTAT_unbound:
-            msg = "Channel is waiting interdom connection.";
+            printf("Interdomain (Waiting connection) - Remote Domain %u",
+                   status.u.unbound.dom);
             break;
         case EVTCHNSTAT_interdomain:
-            msg = "Channel is connected to remote domain.";
+            printf("Interdomain (Connected) - Remote Domain %u, Port %u",
+                   status.u.interdomain.dom, status.u.interdomain.port);
             break;
         case EVTCHNSTAT_pirq:
-            msg = "Channel is bound to a phys IRQ line.";
+            printf("Physical IRQ %u", status.u.pirq);
             break;
         case EVTCHNSTAT_virq:
-            msg = "Channel is bound to a virtual IRQ line.";
+            printf("Virtual IRQ %u", status.u.virq);
             break;
         case EVTCHNSTAT_ipi:
-            msg = "Channel is bound to a virtual IPI line.";
+            printf("IPI");
             break;
         default:
-            msg = "Unknown.";
+            printf("Unknown");
             break;
+        }
 
-        }
-        printf("%03d: %d: %s\n", port, status, msg);
-        port++;
+        printf("\n");
     }
 
     xc_interface_close(xc_fd);

_______________________________________________
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] lsevtchn: Improve this evtchn reporting tool., Xen patchbot-unstable <=