mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
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
2 changed files with 31 additions and 0 deletions
|
@ -68,6 +68,18 @@ struct perf_evlist *perf_evlist__new_default(void)
|
||||||
return evlist;
|
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.
|
* perf_evlist__set_id_pos - set the positions of event ids.
|
||||||
* @evlist: selected event list
|
* @evlist: selected event list
|
||||||
|
@ -248,6 +260,22 @@ error:
|
||||||
return -ENOMEM;
|
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,
|
static int perf_evlist__add_attrs(struct perf_evlist *evlist,
|
||||||
struct perf_event_attr *attrs, size_t nr_attrs)
|
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(void);
|
||||||
struct perf_evlist *perf_evlist__new_default(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,
|
void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus,
|
||||||
struct thread_map *threads);
|
struct thread_map *threads);
|
||||||
void perf_evlist__exit(struct perf_evlist *evlist);
|
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) \
|
#define perf_evlist__add_default_attrs(evlist, array) \
|
||||||
__perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(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,
|
int perf_evlist__add_newtp(struct perf_evlist *evlist,
|
||||||
const char *sys, const char *name, void *handler);
|
const char *sys, const char *name, void *handler);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue