162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __PERF_STREAM_H 362306a36Sopenharmony_ci#define __PERF_STREAM_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include "callchain.h" 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistruct stream { 862306a36Sopenharmony_ci struct callchain_node *cnode; 962306a36Sopenharmony_ci struct callchain_node *pair_cnode; 1062306a36Sopenharmony_ci}; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct evsel_streams { 1362306a36Sopenharmony_ci struct stream *streams; 1462306a36Sopenharmony_ci int nr_streams_max; 1562306a36Sopenharmony_ci int nr_streams; 1662306a36Sopenharmony_ci int evsel_idx; 1762306a36Sopenharmony_ci u64 streams_hits; 1862306a36Sopenharmony_ci}; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistruct evlist_streams { 2162306a36Sopenharmony_ci struct evsel_streams *ev_streams; 2262306a36Sopenharmony_ci int nr_evsel; 2362306a36Sopenharmony_ci}; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistruct evlist; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_civoid evlist_streams__delete(struct evlist_streams *els); 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistruct evlist_streams *evlist__create_streams(struct evlist *evlist, 3062306a36Sopenharmony_ci int nr_streams_max); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cistruct evsel_streams *evsel_streams__entry(struct evlist_streams *els, 3362306a36Sopenharmony_ci int evsel_idx); 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_civoid evsel_streams__match(struct evsel_streams *es_base, 3662306a36Sopenharmony_ci struct evsel_streams *es_pair); 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_civoid evsel_streams__report(struct evsel_streams *es_base, 3962306a36Sopenharmony_ci struct evsel_streams *es_pair); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#endif /* __PERF_STREAM_H */ 42