diff options
Diffstat (limited to 'tools/perf/builtin-report.c')
| -rw-r--r-- | tools/perf/builtin-report.c | 33 | 
1 files changed, 22 insertions, 11 deletions
| diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 6386af6a2612..dc0364f671b9 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -1175,6 +1175,8 @@ int cmd_report(int argc, const char **argv)  		.annotation_opts	 = annotation__default_options,  		.skip_empty		 = true,  	}; +	char *sort_order_help = sort_help("sort by key(s):"); +	char *field_order_help = sort_help("output field(s): overhead period sample ");  	const struct option options[] = {  	OPT_STRING('i', "input", &input_name, "file",  		    "input file name"), @@ -1209,9 +1211,9 @@ int cmd_report(int argc, const char **argv)  	OPT_BOOLEAN(0, "header-only", &report.header_only,  		    "Show only data header."),  	OPT_STRING('s', "sort", &sort_order, "key[,key2...]", -		   sort_help("sort by key(s):")), +		   sort_order_help),  	OPT_STRING('F', "fields", &field_order, "key[,keys...]", -		   sort_help("output field(s): overhead period sample ")), +		   field_order_help),  	OPT_BOOLEAN(0, "show-cpu-utilization", &symbol_conf.show_cpu_utilization,  		    "Show sample percentage for different cpu modes"),  	OPT_BOOLEAN_FLAG(0, "showcpuutilization", &symbol_conf.show_cpu_utilization, @@ -1344,11 +1346,11 @@ int cmd_report(int argc, const char **argv)  	char sort_tmp[128];  	if (ret < 0) -		return ret; +		goto exit;  	ret = perf_config(report__config, &report);  	if (ret) -		return ret; +		goto exit;  	argc = parse_options(argc, argv, options, report_usage, 0);  	if (argc) { @@ -1362,8 +1364,10 @@ int cmd_report(int argc, const char **argv)  		report.symbol_filter_str = argv[0];  	} -	if (annotate_check_args(&report.annotation_opts) < 0) -		return -EINVAL; +	if (annotate_check_args(&report.annotation_opts) < 0) { +		ret = -EINVAL; +		goto exit; +	}  	if (report.mmaps_mode)  		report.tasks_mode = true; @@ -1377,12 +1381,14 @@ int cmd_report(int argc, const char **argv)  	if (symbol_conf.vmlinux_name &&  	    access(symbol_conf.vmlinux_name, R_OK)) {  		pr_err("Invalid file: %s\n", symbol_conf.vmlinux_name); -		return -EINVAL; +		ret = -EINVAL; +		goto exit;  	}  	if (symbol_conf.kallsyms_name &&  	    access(symbol_conf.kallsyms_name, R_OK)) {  		pr_err("Invalid file: %s\n", symbol_conf.kallsyms_name); -		return -EINVAL; +		ret = -EINVAL; +		goto exit;  	}  	if (report.inverted_callchain) @@ -1406,12 +1412,14 @@ int cmd_report(int argc, const char **argv)  repeat:  	session = perf_session__new(&data, false, &report.tool); -	if (IS_ERR(session)) -		return PTR_ERR(session); +	if (IS_ERR(session)) { +		ret = PTR_ERR(session); +		goto exit; +	}  	ret = evswitch__init(&report.evswitch, session->evlist, stderr);  	if (ret) -		return ret; +		goto exit;  	if (zstd_init(&(session->zstd_data), 0) < 0)  		pr_warning("Decompression initialization failed. Reported data may be incomplete.\n"); @@ -1646,5 +1654,8 @@ error:  	zstd_fini(&(session->zstd_data));  	perf_session__delete(session); +exit: +	free(sort_order_help); +	free(field_order_help);  	return ret;  } |