4 #include <linux/types.h>
14 enum perf_stat_evsel_id
{
15 PERF_STAT_EVSEL_ID__NONE
= 0,
16 PERF_STAT_EVSEL_ID__CYCLES_IN_TX
,
17 PERF_STAT_EVSEL_ID__TRANSACTION_START
,
18 PERF_STAT_EVSEL_ID__ELISION_START
,
19 PERF_STAT_EVSEL_ID__CYCLES_IN_TX_CP
,
20 PERF_STAT_EVSEL_ID__MAX
,
24 struct stats res_stats
[3];
25 enum perf_stat_evsel_id id
;
36 struct perf_stat_config
{
37 enum aggr_mode aggr_mode
;
40 unsigned int interval
;
43 void update_stats(struct stats
*stats
, u64 val
);
44 double avg_stats(struct stats
*stats
);
45 double stddev_stats(struct stats
*stats
);
46 double rel_stddev_stats(double stddev
, double avg
);
48 static inline void init_stats(struct stats
*stats
)
53 stats
->min
= (u64
) -1;
60 bool __perf_evsel_stat__is(struct perf_evsel
*evsel
,
61 enum perf_stat_evsel_id id
);
63 #define perf_stat_evsel__is(evsel, id) \
64 __perf_evsel_stat__is(evsel, PERF_STAT_EVSEL_ID__ ## id)
66 void perf_stat_evsel_id_init(struct perf_evsel
*evsel
);
68 extern struct stats walltime_nsecs_stats
;
70 void perf_stat__reset_shadow_stats(void);
71 void perf_stat__update_shadow_stats(struct perf_evsel
*counter
, u64
*count
,
73 void perf_stat__print_shadow_stats(FILE *out
, struct perf_evsel
*evsel
,
74 double avg
, int cpu
, enum aggr_mode aggr
);
76 void perf_evsel__reset_stat_priv(struct perf_evsel
*evsel
);
77 int perf_evsel__alloc_stat_priv(struct perf_evsel
*evsel
);
78 void perf_evsel__free_stat_priv(struct perf_evsel
*evsel
);
80 int perf_evsel__alloc_prev_raw_counts(struct perf_evsel
*evsel
,
81 int ncpus
, int nthreads
);
82 void perf_evsel__free_prev_raw_counts(struct perf_evsel
*evsel
);
84 int perf_evsel__alloc_stats(struct perf_evsel
*evsel
, bool alloc_raw
);
86 int perf_evlist__alloc_stats(struct perf_evlist
*evlist
, bool alloc_raw
);
87 void perf_evlist__free_stats(struct perf_evlist
*evlist
);
88 void perf_evlist__reset_stats(struct perf_evlist
*evlist
);
90 int perf_stat_process_counter(struct perf_stat_config
*config
,
91 struct perf_evsel
*counter
);