forked from luck/tmp_suning_uos_patched
perf evlist: Introduce perf_evlist__new_dummy constructor
For case where all we need is an evlist with just an "dummy" evsel, like in some 'perf test' entries. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-q52le0pblm2k3ncvyilelr9z@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
4f4ba0e6af
commit
5bae025023
|
@ -68,6 +68,18 @@ struct perf_evlist *perf_evlist__new_default(void)
|
|||
return evlist;
|
||||
}
|
||||
|
||||
struct perf_evlist *perf_evlist__new_dummy(void)
|
||||
{
|
||||
struct perf_evlist *evlist = perf_evlist__new();
|
||||
|
||||
if (evlist && perf_evlist__add_dummy(evlist)) {
|
||||
perf_evlist__delete(evlist);
|
||||
evlist = NULL;
|
||||
}
|
||||
|
||||
return evlist;
|
||||
}
|
||||
|
||||
/**
|
||||
* perf_evlist__set_id_pos - set the positions of event ids.
|
||||
* @evlist: selected event list
|
||||
|
@ -248,6 +260,22 @@ int perf_evlist__add_default(struct perf_evlist *evlist)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
int perf_evlist__add_dummy(struct perf_evlist *evlist)
|
||||
{
|
||||
struct perf_event_attr attr = {
|
||||
.type = PERF_TYPE_SOFTWARE,
|
||||
.config = PERF_COUNT_SW_DUMMY,
|
||||
.size = sizeof(attr), /* to capture ABI version */
|
||||
};
|
||||
struct perf_evsel *evsel = perf_evsel__new(&attr);
|
||||
|
||||
if (evsel == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
perf_evlist__add(evlist, evsel);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int perf_evlist__add_attrs(struct perf_evlist *evlist,
|
||||
struct perf_event_attr *attrs, size_t nr_attrs)
|
||||
{
|
||||
|
|
|
@ -67,6 +67,7 @@ struct perf_evsel_str_handler {
|
|||
|
||||
struct perf_evlist *perf_evlist__new(void);
|
||||
struct perf_evlist *perf_evlist__new_default(void);
|
||||
struct perf_evlist *perf_evlist__new_dummy(void);
|
||||
void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus,
|
||||
struct thread_map *threads);
|
||||
void perf_evlist__exit(struct perf_evlist *evlist);
|
||||
|
@ -81,6 +82,8 @@ int __perf_evlist__add_default_attrs(struct perf_evlist *evlist,
|
|||
#define perf_evlist__add_default_attrs(evlist, array) \
|
||||
__perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(array))
|
||||
|
||||
int perf_evlist__add_dummy(struct perf_evlist *evlist);
|
||||
|
||||
int perf_evlist__add_newtp(struct perf_evlist *evlist,
|
||||
const char *sys, const char *name, void *handler);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user