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] tools: fix several problems in gtracestat

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] tools: fix several problems in gtracestat
From: "Wei, Gang" <gang.wei@xxxxxxxxx>
Date: Thu, 3 Mar 2011 18:22:04 +0800
Accept-language: zh-CN, en-US
Acceptlanguage: zh-CN, en-US
Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>, "Wei, Gang" <gang.wei@xxxxxxxxx>, Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Delivery-date: Thu, 03 Mar 2011 02:25:05 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcvZjNdzYhDfcmH9TXuYUJlHGTDMwg==
Thread-topic: tools: fix several problems in gtracestat
tools: fix several problems in gtracestat

Fixed problems include:
  * previously just print out a error instead of help info while running 
without cmdline parameters.
  * -u & -n lead to Segmentation fault.
  * -c and then use default ranges, the default ranges is not 50us... but 
50000/tsc2us....

Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx> 

diff -r e7b31cc0093c tools/misc/gtracestat.c
--- a/tools/misc/gtracestat.c   Mon Jan 31 17:46:55 2011 +0000
+++ b/tools/misc/gtracestat.c   Fri Mar 04 23:50:16 2011 +0800
@@ -137,9 +137,13 @@ int main(int argc, char *argv[])
         { NULL, 0, NULL, 0 },
     };
 
+    if ( argc == 1 ) {
+        show_help();
+        exit(EXIT_SUCCESS);
+    }
     while (1) {
         int ch, opt_idx;
-        ch = getopt_long(argc, argv, "vhds:e:l:bcmaupnzx",
+        ch = getopt_long(argc, argv, "vhds:e:l:bcmau:pn:zx",
                          long_options, &opt_idx);
         if (ch == -1)
             break;
@@ -435,13 +439,13 @@ int load_file(char *fname)
 
 void show_version(void)
 {
-    printf("gtracestat - (C) 2009 Intel Corporation\n");
+    printf("gtracestat - (C) 2009-2011 Intel Corporation\n");
 }
 
 void show_help(void)
 {
     show_version();
-    printf("tracestat <trace.data> [-vhdselbcmau]\n");
+    printf("gtracestat <trace.data> [-vhdselbcmau]\n");
     printf("  trace.data       raw data got by 'xentrace -e 0x80f000 
trace.dat'\n");
     printf("  -v / --version   show version message\n");
     printf("  -h / --help      show this message\n");
@@ -453,9 +457,9 @@ void show_help(void)
     printf("  -c / --count       give count summary info\n");
     printf("  -a / --average     give total/average residency info\n");
     printf("  -m / --maxmin      show man/min residency summary info\n");
-    printf("  -u / --tsc2us      specify how many tsc is a us unit\n");
+    printf("  -u / --tsc2us <tsc-per-us> specify how many tsc is a us unit\n");
     printf("  -p / --px          operate on Px entries\n");
-    printf("  -n / --tsc2phase   specify how many tsc is a phase unit (only in 
px)\n");
+    printf("  -n / --tsc2phase <tsc-per-phase> specify how many tsc is a phase 
unit (only in px)\n");
     printf("  -z / --exp-ratio   show the ratio of early break events\n");
     printf("  -x / --exp-pred    show the ratio of expected / predicted in Cx 
entry\n");
 }
@@ -745,21 +749,22 @@ void do_maxmin(void)
 
 void do_count(void)
 {
-    uint64_t scale[100] = { 50000UL, 100000UL, 200000UL, 400000UL, 800000UL, 
1000000UL };
-    int a[100];
+    uint64_t scale[100] = { 50UL, 100UL, 200UL, 400UL, 800UL, 1000UL };
+    int a;
     int scale_len = 6;
     int len = 0;
     int i, j;
 
     printf("Please input the period:  (Ctrl+D to quit)\n");
-    printf("The default is 50us, 100us, 200us, 400us, 800us, 1000us.\n(unit is 
us, you DO NOT need to add us and specify ZERO us and please be in INCREASING 
order.)\n");
-    while (scanf("%d", &a[len]) == 1)
-        len++;
-    if (len) {
-        for (i = 0; i < len; i++)
-            scale[i] = a[i] * tsc2us;
+    printf("The default is: 50 100 200 400 800 1000\n"
+           "(unit is us, DO NOT specify ZERO as any entry, keep entries in 
INCREASING order.)\n");
+    while (scanf("%d", &a) == 1) {
+        scale[len++] = a;
         scale_len = len;
     }
+    for (i = 0; i < scale_len; i++)
+        scale[i] = scale[i] * tsc2us;
+
     for (i = 0; i < max_cpu_num; i++) {
         struct cond_rec *r[MAX_CX_NR];
         uint64_t sum[MAX_CX_NR];

Attachment: gtracestat-fix.patch
Description: gtracestat-fix.patch

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