Skip to contentSkip to conversation

xenbaked: Fix access to trace buffer after xentrace changes

PATCH New NISHIGUCHI Naoki 1 participant 1 message Apr 24, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xenbaked: Fix access to trace buffer after xentrace changes

Hi,

Xenmon does not work correctlly after xentrace changes in cs 17000.

Attached patch fixes this problem.
This patch modifies access to trace buffer same as tools/xentrace.

Regards,
Naoki Nishiguchi

tools/xenmon/xenbaked.c +27 -5
diff -r 77dec8732cde tools/xenmon/xenbaked.c
@@ -509,14 +509,36 @@ int monitor_tbufs(void)
     {
         for ( i = 0; (i < num) && !interrupted; i++ )
         {
-            while ( meta[i]->cons != meta[i]->prod )
+            unsigned long start_offset, end_offset, cons, prod;
+
+            cons = meta[i]->cons;
+            prod = meta[i]->prod;
+            xen_rmb(); /* read prod, then read item. */
+
+            if ( cons == prod )
+                continue;
+
+            start_offset = cons % data_size;
+            end_offset = prod % data_size;
+
+            if ( start_offset >= end_offset )
             {
-                xen_rmb(); /* read prod, then read item. */
+                while ( start_offset != data_size )
+                {
+                    rec_size = process_record(
+                        i, (struct t_rec *)(data[i] + start_offset));
+                    start_offset += rec_size;
+                }
+                start_offset = 0;
+            }
+            while ( start_offset != end_offset )
+            {
                 rec_size = process_record(
-                    i, (struct t_rec *)(data[i] + meta[i]->cons % data_size));
-                xen_mb(); /* read item, then update cons. */
-                meta[i]->cons += rec_size;
+                    i, (struct t_rec *)(data[i] + start_offset));
+                start_offset += rec_size;
             }
+            xen_mb(); /* read item, then update cons. */
+            meta[i]->cons = prod;
         }
 
 	wait_for_event();

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel