On Tue, Aug 25, 2020 at 07:35:07AM +0800, Jin Yao wrote: SNIP
> + int nr_streams_max, > + enum stream_type type) > +{ > + struct evsel_streams *es; > + int nr_evsel = evlist->core.nr_entries, ret = -1; > + > + es = create_evsel_streams(nr_evsel, nr_streams_max); > + if (!es) > + return NULL; > + > + if (type == STREAM_CALLCHAIN) > + ret = evlist_init_callchain_streams(evlist, es, nr_evsel); > + > + if (ret) { > + free_evsel_streams(es, nr_evsel); > + return NULL; > + } > + > + return es; > +} > diff --git a/tools/perf/util/stream.h b/tools/perf/util/stream.h > new file mode 100644 > index 000000000000..a8a0172b4d13 > --- /dev/null > +++ b/tools/perf/util/stream.h > @@ -0,0 +1,30 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __PERF_STREAM_H > +#define __PERF_STREAM_H > + > +#include "callchain.h" > + > +enum stream_type { > + STREAM_NONE = 0, > + STREAM_CALLCHAIN do you plan to add more types? jirka