Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d67356e7 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

perf target: Consolidate target task/cpu checking



There are places that check whether target task/cpu is given or not and
some of them didn't check newly introduced uid or cpu list. Add and use
three of helper functions to treat them properly.

Signed-off-by: default avatarNamhyung Kim <namhyung.kim@lge.com>
Reviewed-by: default avatarDavid 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/1336367344-28071-7-git-send-email-namhyung.kim@lge.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 16ad2ffb
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -843,9 +843,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)

	argc = parse_options(argc, argv, record_options, record_usage,
			    PARSE_OPT_STOP_AT_NON_OPTION);
	if (!argc && !rec->opts.target.pid && !rec->opts.target.tid &&
	    !rec->opts.target.system_wide && !rec->opts.target.cpu_list &&
	    !rec->opts.target.uid_str)
	if (!argc && perf_target__none(&rec->opts.target))
		usage_with_options(record_usage, record_options);

	if (rec->force && rec->append_file) {
+6 −6
Original line number Diff line number Diff line
@@ -290,10 +290,10 @@ static int create_perf_stat_counter(struct perf_evsel *evsel,

	attr->inherit = !no_inherit;

	if (target.system_wide)
	if (!perf_target__no_cpu(&target))
		return perf_evsel__open_per_cpu(evsel, evsel_list->cpus,
						group, group_fd);
	if (!target.pid && !target.tid && (!group || evsel == first)) {
	if (perf_target__no_task(&target) && (!group || evsel == first)) {
		attr->disabled = 1;
		attr->enable_on_exec = 1;
	}
@@ -443,7 +443,7 @@ static int run_perf_stat(int argc __used, const char **argv)
			exit(-1);
		}

		if (!target.tid && !target.pid && !target.system_wide)
		if (perf_target__none(&target))
			evsel_list->threads->map[0] = child_pid;

		/*
@@ -965,7 +965,7 @@ static void print_stat(int argc, const char **argv)
	if (!csv_output) {
		fprintf(output, "\n");
		fprintf(output, " Performance counter stats for ");
		if (!target.pid && !target.tid) {
		if (perf_target__no_task(&target)) {
			fprintf(output, "\'%s", argv[0]);
			for (i = 1; i < argc; i++)
				fprintf(output, " %s", argv[i]);
@@ -1187,13 +1187,13 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
	} else if (big_num_opt == 0) /* User passed --no-big-num */
		big_num = false;

	if (!argc && !target.pid && !target.tid)
	if (!argc && perf_target__no_task(&target))
		usage_with_options(stat_usage, options);
	if (run_count <= 0)
		usage_with_options(stat_usage, options);

	/* no_aggr, cgroup are for system-wide only */
	if ((no_aggr || nr_cgroups) && !target.system_wide) {
	if ((no_aggr || nr_cgroups) && perf_target__no_cpu(&target)) {
		fprintf(stderr, "both cgroup and no-aggregation "
			"modes only available in system-wide mode\n");

+1 −1
Original line number Diff line number Diff line
@@ -1016,7 +1016,7 @@ static int __cmd_top(struct perf_top *top)
	if (ret)
		goto out_delete;

	if (top->target.tid || top->target.uid != UINT_MAX)
	if (!perf_target__no_task(&top->target))
		perf_event__synthesize_thread_map(&top->tool, top->evlist->threads,
						  perf_event__process,
						  &top->session->host_machine);
+4 −6
Original line number Diff line number Diff line
@@ -609,12 +609,10 @@ int perf_evlist__create_maps(struct perf_evlist *evlist,
	if (evlist->threads == NULL)
		return -1;

	if (target->uid != UINT_MAX || target->tid)
		evlist->cpus = cpu_map__dummy_new();
	else if (!target->system_wide && target->cpu_list == NULL)
		evlist->cpus = cpu_map__dummy_new();
	else
	if (!perf_target__no_cpu(target))
		evlist->cpus = cpu_map__new(target->cpu_list);
	else
		evlist->cpus = cpu_map__dummy_new();

	if (evlist->cpus == NULL)
		goto out_delete_threads;
@@ -831,7 +829,7 @@ int perf_evlist__prepare_workload(struct perf_evlist *evlist,
		exit(-1);
	}

	if (!opts->target.system_wide && !opts->target.tid && !opts->target.pid)
	if (perf_target__none(&opts->target))
		evlist->threads->map[0] = evlist->workload.pid;

	close(child_ready_pipe[1]);
+4 −4
Original line number Diff line number Diff line
@@ -114,8 +114,8 @@ void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts,
		attr->sample_type	|= PERF_SAMPLE_PERIOD;

	if (!opts->sample_id_all_missing &&
	    (opts->sample_time || opts->target.system_wide ||
	     !opts->no_inherit || opts->target.cpu_list))
	    (opts->sample_time || !opts->no_inherit ||
	     !perf_target__no_cpu(&opts->target)))
		attr->sample_type	|= PERF_SAMPLE_TIME;

	if (opts->raw_samples) {
@@ -136,8 +136,8 @@ void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts,
	attr->mmap = track;
	attr->comm = track;

	if (!opts->target.pid && !opts->target.tid &&
	    !opts->target.system_wide && (!opts->group || evsel == first)) {
	if (perf_target__none(&opts->target) &&
	    (!opts->group || evsel == first)) {
		attr->disabled = 1;
		attr->enable_on_exec = 1;
	}
Loading