diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2011-05-24 10:14:10 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2011-05-24 10:14:10 +0100 |
commit | 9932ce68c24cd6a2b30d2af11373340ed263326f (patch) | |
tree | 1314bfd993cdd5b72d8e5b6303547e426a7fab51 /tools/libxc/xc_domain_save.c | |
parent | 84c8aada88692803cd3e48162c14d34d9b81cc0d (diff) | |
download | xen-9932ce68c24cd6a2b30d2af11373340ed263326f.tar.gz xen-9932ce68c24cd6a2b30d2af11373340ed263326f.tar.bz2 xen-9932ce68c24cd6a2b30d2af11373340ed263326f.zip |
libxc: save: move static stats variable to stack variable.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Diffstat (limited to 'tools/libxc/xc_domain_save.c')
-rw-r--r-- | tools/libxc/xc_domain_save.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c index 271ce7f809..c5c909ce1d 100644 --- a/tools/libxc/xc_domain_save.c +++ b/tools/libxc/xc_domain_save.c @@ -270,9 +270,9 @@ struct time_stats { }; static int print_stats(xc_interface *xch, uint32_t domid, int pages_sent, + struct time_stats *last, xc_shadow_op_stats_t *stats, int print) { - static struct time_stats last; struct time_stats now; gettimeofday(&now.wall, NULL); @@ -289,12 +289,12 @@ static int print_stats(xc_interface *xch, uint32_t domid, int pages_sent, long long d0_cpu_delta; long long d1_cpu_delta; - wall_delta = tv_delta(&now.wall,&last.wall)/1000; + wall_delta = tv_delta(&now.wall,&last->wall)/1000; if ( wall_delta == 0 ) wall_delta = 1; - d0_cpu_delta = (now.d0_cpu - last.d0_cpu)/1000; - d1_cpu_delta = (now.d1_cpu - last.d1_cpu)/1000; + d0_cpu_delta = (now.d0_cpu - last->d0_cpu)/1000; + d1_cpu_delta = (now.d1_cpu - last->d1_cpu)/1000; DPRINTF("delta %lldms, dom0 %d%%, target %d%%, sent %dMb/s, " "dirtied %dMb/s %" PRId32 " pages\n", @@ -306,7 +306,7 @@ static int print_stats(xc_interface *xch, uint32_t domid, int pages_sent, stats->dirty_count); } - last = now; + *last = now; return 0; } @@ -843,7 +843,8 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter DECLARE_HYPERCALL_BUFFER(unsigned long, to_send); unsigned long *to_fix = NULL; - xc_shadow_op_stats_t stats; + struct time_stats time_stats; + xc_shadow_op_stats_t shadow_stats; unsigned long needed_to_fix = 0; unsigned long total_sent = 0; @@ -1053,7 +1054,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter DPRINTF("Had %d unexplained entries in p2m table\n", err); } - print_stats(xch, dom, 0, &stats, 0); + print_stats(xch, dom, 0, &time_stats, &shadow_stats, 0); tmem_saved = xc_tmem_save(xch, dom, io_fd, live, XC_SAVE_ID_TMEM); if ( tmem_saved == -1 ) @@ -1377,7 +1378,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter if ( last_iter ) { - print_stats( xch, dom, sent_this_iter, &stats, 1); + print_stats( xch, dom, sent_this_iter, &time_stats, &shadow_stats, 1); DPRINTF("Total pages sent= %ld (%.2fx)\n", total_sent, ((float)total_sent)/dinfo->p2m_size ); @@ -1439,7 +1440,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter if ( xc_shadow_control(xch, dom, XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(to_send), - dinfo->p2m_size, NULL, 0, &stats) != dinfo->p2m_size ) + dinfo->p2m_size, NULL, 0, &shadow_stats) != dinfo->p2m_size ) { PERROR("Error flushing shadow PT"); goto out; @@ -1447,7 +1448,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter sent_last_iter = sent_this_iter; - print_stats(xch, dom, sent_this_iter, &stats, 1); + print_stats(xch, dom, sent_this_iter, &time_stats, &shadow_stats, 1); } } /* end of infinite for loop */ @@ -1810,7 +1811,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter callbacks->checkpoint(callbacks->data) > 0) { /* reset stats timer */ - print_stats(xch, dom, 0, &stats, 0); + print_stats(xch, dom, 0, &time_stats, &shadow_stats, 0); rc = 1; /* last_iter = 1; */ @@ -1821,11 +1822,11 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter goto out; } DPRINTF("SUSPEND shinfo %08lx\n", info.shared_info_frame); - print_stats(xch, dom, 0, &stats, 1); + print_stats(xch, dom, 0, &time_stats, &shadow_stats, 1); if ( xc_shadow_control(xch, dom, XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(to_send), - dinfo->p2m_size, NULL, 0, &stats) != dinfo->p2m_size ) + dinfo->p2m_size, NULL, 0, &shadow_stats) != dinfo->p2m_size ) { PERROR("Error flushing shadow PT"); } |