# HG changeset patch # User kaf24@firebug.cl.cam.ac.uk # Date 1154962539 -3600 # Node ID 6289234304f12912c8ab08aa262c8958538eb8cf # Parent 7924b6bd728a3192ed5ff1792499273862a183e5 Provides hooks for perfc print/reset/gather. These arch-neutral hooks allow architectures to report hardware counters. Signed-off-by: Tristan Gingold diff -r 7924b6bd728a -r 6289234304f1 xen/common/perfc.c --- a/xen/common/perfc.c Mon Aug 07 15:53:06 2006 +0100 +++ b/xen/common/perfc.c Mon Aug 07 15:55:39 2006 +0100 @@ -8,6 +8,7 @@ #include #include #include +#include #undef PERFCOUNTER #undef PERFCOUNTER_CPU @@ -89,9 +90,7 @@ void perfc_printall(unsigned char key) printk("\n"); } -#ifdef PERF_ARRAYS - ptwr_eip_stat_print(); -#endif + arch_perfc_printall(); } void perfc_reset(unsigned char key) @@ -130,9 +129,7 @@ void perfc_reset(unsigned char key) } } -#ifdef PERF_ARRAYS - ptwr_eip_stat_reset(); -#endif + arch_perfc_reset (); } static dom0_perfc_desc_t perfc_d[NR_PERFCTRS]; @@ -181,6 +178,9 @@ static int perfc_copy_info(XEN_GUEST_HAN if (perfc_vals == NULL) return -ENOMEM; + /* Architecture may fill counters from hardware. */ + arch_perfc_gather(); + /* We gather the counts together every time. */ for ( i = 0; i < NR_PERFCTRS; i++ ) { diff -r 7924b6bd728a -r 6289234304f1 xen/include/asm-ia64/perfc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/include/asm-ia64/perfc.h Mon Aug 07 15:55:39 2006 +0100 @@ -0,0 +1,16 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ + +static inline void arch_perfc_printall (void) +{ +} + +static inline void arch_perfc_reset (void) +{ +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif diff -r 7924b6bd728a -r 6289234304f1 xen/include/asm-powerpc/perfc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/include/asm-powerpc/perfc.h Mon Aug 07 15:55:39 2006 +0100 @@ -0,0 +1,16 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ + +static inline void arch_perfc_printall (void) +{ +} + +static inline void arch_perfc_reset (void) +{ +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif diff -r 7924b6bd728a -r 6289234304f1 xen/include/asm-x86/perfc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/include/asm-x86/perfc.h Mon Aug 07 15:55:39 2006 +0100 @@ -0,0 +1,23 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ +#include + +static inline void arch_perfc_printall (void) +{ +#ifdef PERF_ARRAYS + ptwr_eip_stat_print(); +#endif +} + +static inline void arch_perfc_reset (void) +{ +#ifdef PERF_ARRAYS + ptwr_eip_stat_reset(); +#endif +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif