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