xenbaked: Fix access to trace buffer after xentrace changes
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.
Signed-off-by Naoki Nishiguchi <[email protected]>
Regards,
Naoki Nishiguchi
tools/xenmon/xenbaked.c +27 -5
@@ -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