18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __PERF_STREAM_H
38c2ecf20Sopenharmony_ci#define __PERF_STREAM_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include "callchain.h"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cistruct stream {
88c2ecf20Sopenharmony_ci	struct callchain_node	*cnode;
98c2ecf20Sopenharmony_ci	struct callchain_node	*pair_cnode;
108c2ecf20Sopenharmony_ci};
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cistruct evsel_streams {
138c2ecf20Sopenharmony_ci	struct stream		*streams;
148c2ecf20Sopenharmony_ci	int			nr_streams_max;
158c2ecf20Sopenharmony_ci	int			nr_streams;
168c2ecf20Sopenharmony_ci	int			evsel_idx;
178c2ecf20Sopenharmony_ci	u64			streams_hits;
188c2ecf20Sopenharmony_ci};
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cistruct evlist_streams {
218c2ecf20Sopenharmony_ci	struct evsel_streams	*ev_streams;
228c2ecf20Sopenharmony_ci	int			nr_evsel;
238c2ecf20Sopenharmony_ci};
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_cistruct evlist;
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_civoid evlist_streams__delete(struct evlist_streams *els);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_cistruct evlist_streams *evlist__create_streams(struct evlist *evlist,
308c2ecf20Sopenharmony_ci					      int nr_streams_max);
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_cistruct evsel_streams *evsel_streams__entry(struct evlist_streams *els,
338c2ecf20Sopenharmony_ci					   int evsel_idx);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_civoid evsel_streams__match(struct evsel_streams *es_base,
368c2ecf20Sopenharmony_ci			  struct evsel_streams *es_pair);
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_civoid evsel_streams__report(struct evsel_streams *es_base,
398c2ecf20Sopenharmony_ci			   struct evsel_streams *es_pair);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#endif /* __PERF_STREAM_H */
42