Em Fri, Dec 01, 2017 at 06:57:26PM +0800, Jin Yao escreveu: > Perf has a set of static variables to record the runtime shadow > metrics stats. > > While if we want to record the runtime shadow stats for per-thread, > it will be the limitation. This patch creates a structure and the > next patches will use this structure to update the runtime shadow > stats for per-thread. > > Signed-off-by: Jin Yao <yao....@linux.intel.com> > --- > tools/perf/util/stat-shadow.c | 11 ----------- > tools/perf/util/stat.h | 44 > ++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 43 insertions(+), 12 deletions(-) > > diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c > index 855e35c..5853901 100644 > --- a/tools/perf/util/stat-shadow.c > +++ b/tools/perf/util/stat-shadow.c > @@ -9,17 +9,6 @@ > #include "expr.h" > #include "metricgroup.h" > > -enum { > - CTX_BIT_USER = 1 << 0, > - CTX_BIT_KERNEL = 1 << 1, > - CTX_BIT_HV = 1 << 2, > - CTX_BIT_HOST = 1 << 3, > - CTX_BIT_IDLE = 1 << 4, > - CTX_BIT_MAX = 1 << 5, > -}; > - > -#define NUM_CTX CTX_BIT_MAX > - > /* > * AGGR_GLOBAL: Use CPU 0 > * AGGR_SOCKET: Use first CPU of socket > diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h > index eefca5c..290c51e 100644 > --- a/tools/perf/util/stat.h > +++ b/tools/perf/util/stat.h > @@ -5,6 +5,8 @@ > #include <linux/types.h> > #include <stdio.h> > #include "xyarray.h" > +#include "evsel.h"
What is this for? You don't add anything in this patch that uses things from evsel.h. I'm removing it, will fixup if later this becomes needed. - Arnaldo > +#include "rblist.h" > > struct stats > { > @@ -43,6 +45,47 @@ enum aggr_mode { > AGGR_UNSET, > }; > > +enum { > + CTX_BIT_USER = 1 << 0, > + CTX_BIT_KERNEL = 1 << 1, > + CTX_BIT_HV = 1 << 2, > + CTX_BIT_HOST = 1 << 3, > + CTX_BIT_IDLE = 1 << 4, > + CTX_BIT_MAX = 1 << 5, > +}; > + > +#define NUM_CTX CTX_BIT_MAX > + > +enum stat_type { > + STAT_NONE = 0, > + STAT_NSECS, > + STAT_CYCLES, > + STAT_STALLED_CYCLES_FRONT, > + STAT_STALLED_CYCLES_BACK, > + STAT_BRANCHES, > + STAT_CACHEREFS, > + STAT_L1_DCACHE, > + STAT_L1_ICACHE, > + STAT_LL_CACHE, > + STAT_ITLB_CACHE, > + STAT_DTLB_CACHE, > + STAT_CYCLES_IN_TX, > + STAT_TRANSACTION, > + STAT_ELISION, > + STAT_TOPDOWN_TOTAL_SLOTS, > + STAT_TOPDOWN_SLOTS_ISSUED, > + STAT_TOPDOWN_SLOTS_RETIRED, > + STAT_TOPDOWN_FETCH_BUBBLES, > + STAT_TOPDOWN_RECOVERY_BUBBLES, > + STAT_SMI_NUM, > + STAT_APERF, > + STAT_MAX > +}; > + > +struct runtime_stat { > + struct rblist value_list; > +}; > + > struct perf_stat_config { > enum aggr_mode aggr_mode; > bool scale; > @@ -92,7 +135,6 @@ struct perf_stat_output_ctx { > bool force_header; > }; > > -struct rblist; > void perf_stat__print_shadow_stats(struct perf_evsel *evsel, > double avg, int cpu, > struct perf_stat_output_ctx *out, > -- > 2.7.4