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] Fix xentrace to initialise the trace buffers if they are

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Fix xentrace to initialise the trace buffers if they are not set up.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sun, 14 May 2006 20:56:08 +0000
Delivery-date: Sun, 14 May 2006 13:57:29 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 7f98c67636f4824467d47b608c108e9b1959b7e6
# Parent  1b55b85f8cb2f303209d81aa374abd2119f50d07
Fix xentrace to initialise the trace buffers if they are not set up.
Signed-off-by: Atsushi SAKAI <sakaia@xxxxxxxxxxxxxx>
---
 tools/xentrace/xentrace.c |   65 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 51 insertions(+), 14 deletions(-)

diff -r 1b55b85f8cb2 -r 7f98c67636f4 tools/xentrace/xentrace.c
--- a/tools/xentrace/xentrace.c Fri May 12 15:17:21 2006 +0100
+++ b/tools/xentrace/xentrace.c Fri May 12 15:19:37 2006 +0100
@@ -28,6 +28,8 @@
 
 #include <xenctrl.h>
 
+#include "xc_private.h"
+
 #define PERROR(_m, _a...)                                       \
 do {                                                            \
     int __saved_errno = errno;                                  \
@@ -46,7 +48,7 @@ extern FILE *stderr;
 /* sleep for this long (milliseconds) between checking the trace buffers */
 #define POLL_SLEEP_MILLIS 100
 
-
+#define DEFAULT_TBUF_SIZE 20
 /***** The code **************************************************************/
 
 typedef struct settings_st {
@@ -101,6 +103,26 @@ void write_rec(unsigned int cpu, struct 
     }
 }
 
+void enable_tracing_or_die(int xc_handle) 
+{
+  int enable = 1;
+  int tbsize = DEFAULT_TBUF_SIZE;
+  
+  if (xc_tbuf_enable(xc_handle, enable) != 0) {
+    if (xc_tbuf_set_size(xc_handle, tbsize) != 0) {
+      perror("set_size Hypercall failure");
+      exit(1);
+    }
+    printf("Set default trace buffer allocation (%d pages)\n", tbsize);
+    if (xc_tbuf_enable(xc_handle, enable) != 0) {
+      perror("Could not enable trace buffers\n");
+      exit(1);
+    }
+  }
+  else
+    printf("Tracing enabled\n");
+}
+
 /**
  * get_tbufs - get pointer to and size of the trace buffers
  * @mfn:  location to store mfn of the trace buffers to
@@ -111,22 +133,37 @@ void write_rec(unsigned int cpu, struct 
  */
 void get_tbufs(unsigned long *mfn, unsigned long *size)
 {
-    uint32_t size32;
+    int ret;
+    dom0_op_t op;                        /* dom0 op we'll build             */
     int xc_handle = xc_interface_open(); /* for accessing control interface */
-
-    if (xc_tbuf_get_size(xc_handle, &size32) != 0)
-        goto fail;
-    *size = size32;
-
-    if (xc_tbuf_get_mfn(xc_handle, mfn) != 0)
-        goto fail;
+    unsigned int tbsize;
+
+    enable_tracing_or_die(xc_handle);
+
+    if (xc_tbuf_get_size(xc_handle, &tbsize) != 0) {
+      perror("Failure to get tbuf info from Xen. Guess size is 0?");
+      exit(1);
+    }
+    else
+      printf("Current tbuf size: 0x%x\n", tbsize);
+    
+
+    op.cmd = DOM0_TBUFCONTROL;
+    op.interface_version = DOM0_INTERFACE_VERSION;
+    op.u.tbufcontrol.op  = DOM0_TBUF_GET_INFO;
+
+    ret = do_dom0_op(xc_handle, &op);
 
     xc_interface_close(xc_handle);
-    return;
-
-fail:
-    PERROR("Failure to get trace buffer pointer from Xen");
-    exit(EXIT_FAILURE);
+
+    if ( ret != 0 )
+    {
+        PERROR("Failure to get trace buffer pointer from Xen");
+        exit(EXIT_FAILURE);
+    }
+
+    *mfn  = op.u.tbufcontrol.buffer_mfn;
+    *size = op.u.tbufcontrol.size;
 }
 
 /**

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Fix xentrace to initialise the trace buffers if they are not set up., Xen patchbot-unstable <=