On Thu, Sep 30, George Dunlap wrote:
Have you tried using xenalyze to analyze your trace?
http://xenbits.xensource.com/ext/xenalyze.hg
I will try it, thanks.
To build it, these changes are needed:
xenalyze.c:8038: error: ignoring return value of 'pipe', declared with attribute warn_unused_result
xenalyze.c:7731: error: 'toplevel' may be used uninitialized in this function
xenalyze.c:6168: error: 'e.pte' may be used uninitialized in this function
xenalyze.c:6168: error: 'e.addr' may be used uninitialized in this function
xenalyze.c:6168: error: 'e.eip' may be used uninitialized in this function
xenalyze.c:7360: error: 'first_tsc' may be used uninitialized in this function
xenalyze.c:6611: error: 'sevt.new_runstate' may be used uninitialized in this
function
xenalyze.c:6611: error: 'sevt.old_runstate' may be used uninitialized in this
function
xenalyze.c:6591: error: 'type' may be used uninitialized in this function
---
xenalyze.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
--- xenalyze.hg/xenalyze.c
+++ xenalyze.hg/xenalyze.c
@@ -6167,6 +6167,7 @@ void pv_ptwr_emulation_process(struct re
unsigned long long pte, addr, eip;
} e;
+ memset(&e, 0x5a, sizeof(e));
switch ( pevt.minor ) {
case PV_PTWR_EMULATION_PAE:
if ( pevt.x64 )
@@ -6622,6 +6623,7 @@ void sched_runstate_process(struct pcpu_
sevt.old_runstate = _sevt.old_runstate;
break;
case 2:
+ default:
type = CONTINUE;
sevt.new_runstate = sevt.old_runstate = RUNSTATE_RUNNING;
break;
@@ -7366,8 +7368,7 @@ void process_lost_records(struct pcpu_in
ri->extra_words);
dump_unexpected_and_exit(ri);
}
- else
- first_tsc = r->first_tsc;
+ first_tsc = r->first_tsc;
if(opt.dump_cooked || opt.dump_all)
{
@@ -7728,7 +7729,7 @@ void create_dump_header(struct record_in
int find_toplevel_event(struct record_info *ri)
{
- int toplevel, i, count;
+ int toplevel = 0, i, count;
for(i=0, count=0; i<TOPLEVEL_MAX; i++)
if(ri->evt.main& (1UL<<i))
@@ -8035,7 +8036,8 @@ void progress_child_exec(void) {
void progress_init(void) {
int pid;
- pipe(G.progress.pipe);
+ if (pipe(G.progress.pipe)< 0)
+ perror("pipe");
if(!(pid = fork())) {
progress_child_exec();