mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-05 22:25:16 +00:00
perf evlist: Make create_maps() take struct perf_target
Now we have all information that needed to create cpu/thread maps in struct perf_target, it'd be better using it as an argument. Signed-off-by: Namhyung Kim <namhyung.kim@lge.com> Reviewed-by: David Ahern <dsahern@gmail.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1335417327-11796-6-git-send-email-namhyung.kim@lge.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
4bd0f2d2c0
commit
b809ac100e
5 changed files with 15 additions and 16 deletions
|
@ -891,9 +891,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
|
||||||
rec->opts.target.uid == UINT_MAX - 1)
|
rec->opts.target.uid == UINT_MAX - 1)
|
||||||
goto out_free_fd;
|
goto out_free_fd;
|
||||||
|
|
||||||
if (perf_evlist__create_maps(evsel_list, rec->opts.target.pid,
|
if (perf_evlist__create_maps(evsel_list, &rec->opts.target) < 0)
|
||||||
rec->opts.target.tid, rec->opts.target.uid,
|
|
||||||
rec->opts.target.cpu_list) < 0)
|
|
||||||
usage_with_options(record_usage, record_options);
|
usage_with_options(record_usage, record_options);
|
||||||
|
|
||||||
list_for_each_entry(pos, &evsel_list->entries, node) {
|
list_for_each_entry(pos, &evsel_list->entries, node) {
|
||||||
|
|
|
@ -1165,6 +1165,9 @@ realloc:
|
||||||
static int test__PERF_RECORD(void)
|
static int test__PERF_RECORD(void)
|
||||||
{
|
{
|
||||||
struct perf_record_opts opts = {
|
struct perf_record_opts opts = {
|
||||||
|
.target = {
|
||||||
|
.uid = UINT_MAX,
|
||||||
|
},
|
||||||
.no_delay = true,
|
.no_delay = true,
|
||||||
.freq = 10,
|
.freq = 10,
|
||||||
.mmap_pages = 256,
|
.mmap_pages = 256,
|
||||||
|
@ -1207,9 +1210,7 @@ static int test__PERF_RECORD(void)
|
||||||
* perf_evlist__prepare_workload we'll fill in the only thread
|
* perf_evlist__prepare_workload we'll fill in the only thread
|
||||||
* we're monitoring, the one forked there.
|
* we're monitoring, the one forked there.
|
||||||
*/
|
*/
|
||||||
err = perf_evlist__create_maps(evlist, opts.target.pid,
|
err = perf_evlist__create_maps(evlist, &opts.target);
|
||||||
opts.target.tid, UINT_MAX,
|
|
||||||
opts.target.cpu_list);
|
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
pr_debug("Not enough memory to create thread/cpu maps\n");
|
pr_debug("Not enough memory to create thread/cpu maps\n");
|
||||||
goto out_delete_evlist;
|
goto out_delete_evlist;
|
||||||
|
|
|
@ -1258,9 +1258,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
|
||||||
if (top.target.uid_str != NULL && top.target.uid == UINT_MAX - 1)
|
if (top.target.uid_str != NULL && top.target.uid == UINT_MAX - 1)
|
||||||
goto out_delete_evlist;
|
goto out_delete_evlist;
|
||||||
|
|
||||||
if (perf_evlist__create_maps(top.evlist, top.target.pid,
|
if (perf_evlist__create_maps(top.evlist, &top.target) < 0)
|
||||||
top.target.tid, top.target.uid,
|
|
||||||
top.target.cpu_list) < 0)
|
|
||||||
usage_with_options(top_usage, options);
|
usage_with_options(top_usage, options);
|
||||||
|
|
||||||
if (!top.evlist->nr_entries &&
|
if (!top.evlist->nr_entries &&
|
||||||
|
|
|
@ -599,18 +599,20 @@ int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,
|
||||||
return perf_evlist__mmap_per_cpu(evlist, prot, mask);
|
return perf_evlist__mmap_per_cpu(evlist, prot, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_evlist__create_maps(struct perf_evlist *evlist, const char *target_pid,
|
int perf_evlist__create_maps(struct perf_evlist *evlist,
|
||||||
const char *target_tid, uid_t uid, const char *cpu_list)
|
struct perf_target *target)
|
||||||
{
|
{
|
||||||
evlist->threads = thread_map__new_str(target_pid, target_tid, uid);
|
evlist->threads = thread_map__new_str(target->pid, target->tid,
|
||||||
|
target->uid);
|
||||||
|
|
||||||
if (evlist->threads == NULL)
|
if (evlist->threads == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (uid != UINT_MAX || (cpu_list == NULL && target_tid))
|
if (target->uid != UINT_MAX ||
|
||||||
|
(target->cpu_list == NULL && target->tid))
|
||||||
evlist->cpus = cpu_map__dummy_new();
|
evlist->cpus = cpu_map__dummy_new();
|
||||||
else
|
else
|
||||||
evlist->cpus = cpu_map__new(cpu_list);
|
evlist->cpus = cpu_map__new(target->cpu_list);
|
||||||
|
|
||||||
if (evlist->cpus == NULL)
|
if (evlist->cpus == NULL)
|
||||||
goto out_delete_threads;
|
goto out_delete_threads;
|
||||||
|
|
|
@ -106,8 +106,8 @@ static inline void perf_evlist__set_maps(struct perf_evlist *evlist,
|
||||||
evlist->threads = threads;
|
evlist->threads = threads;
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_evlist__create_maps(struct perf_evlist *evlist, const char *target_pid,
|
int perf_evlist__create_maps(struct perf_evlist *evlist,
|
||||||
const char *tid, uid_t uid, const char *cpu_list);
|
struct perf_target *target);
|
||||||
void perf_evlist__delete_maps(struct perf_evlist *evlist);
|
void perf_evlist__delete_maps(struct perf_evlist *evlist);
|
||||||
int perf_evlist__set_filters(struct perf_evlist *evlist);
|
int perf_evlist__set_filters(struct perf_evlist *evlist);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue