[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] 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 <nisiguti@xxxxxxxxxxxxxx> Regards, Naoki Nishiguchi diff -r 77dec8732cde tools/xenmon/xenbaked.c --- a/tools/xenmon/xenbaked.c Wed Apr 23 16:58:44 2008 +0100 +++ b/tools/xenmon/xenbaked.c Thu Apr 24 11:19:41 2008 +0900 @@ -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 Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |