xref: /openbmc/linux/tools/perf/util/stream.h (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1480accbbSJin Yao /* SPDX-License-Identifier: GPL-2.0 */
2480accbbSJin Yao #ifndef __PERF_STREAM_H
3480accbbSJin Yao #define __PERF_STREAM_H
4480accbbSJin Yao 
5480accbbSJin Yao #include "callchain.h"
6480accbbSJin Yao 
7480accbbSJin Yao struct stream {
8480accbbSJin Yao 	struct callchain_node	*cnode;
9fa79aa64SJin Yao 	struct callchain_node	*pair_cnode;
10480accbbSJin Yao };
11480accbbSJin Yao 
12480accbbSJin Yao struct evsel_streams {
13480accbbSJin Yao 	struct stream		*streams;
14480accbbSJin Yao 	int			nr_streams_max;
15480accbbSJin Yao 	int			nr_streams;
16480accbbSJin Yao 	int			evsel_idx;
1728904f4dSJin Yao 	u64			streams_hits;
18480accbbSJin Yao };
19480accbbSJin Yao 
20480accbbSJin Yao struct evlist_streams {
21480accbbSJin Yao 	struct evsel_streams	*ev_streams;
22480accbbSJin Yao 	int			nr_evsel;
23480accbbSJin Yao };
24480accbbSJin Yao 
25480accbbSJin Yao struct evlist;
26480accbbSJin Yao 
27480accbbSJin Yao void evlist_streams__delete(struct evlist_streams *els);
28480accbbSJin Yao 
29480accbbSJin Yao struct evlist_streams *evlist__create_streams(struct evlist *evlist,
30480accbbSJin Yao 					      int nr_streams_max);
31480accbbSJin Yao 
32dd1d8418SJin Yao struct evsel_streams *evsel_streams__entry(struct evlist_streams *els,
33dd1d8418SJin Yao 					   int evsel_idx);
34dd1d8418SJin Yao 
35fa79aa64SJin Yao void evsel_streams__match(struct evsel_streams *es_base,
36fa79aa64SJin Yao 			  struct evsel_streams *es_pair);
37fa79aa64SJin Yao 
38*5bbd6badSJin Yao void evsel_streams__report(struct evsel_streams *es_base,
39*5bbd6badSJin Yao 			   struct evsel_streams *es_pair);
40*5bbd6badSJin Yao 
41480accbbSJin Yao #endif /* __PERF_STREAM_H */
42