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

Commit 70cb4e96 authored by Feng Tang's avatar Feng Tang Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Add a global variable "const char *input_name"



Currently many perf commands annotate/evlist/report/script/lock etc all
support "-i" option to chose a specific perf data, and all of them
create a local "input_name" to save the file name for that perf data.

Since most of these commands need it, we can add a global variable for
it, also it can some other benefits:

1. When calling script browser inside hists/annotation browser, it needs
to know the perf data file name to run that script.

2. For further feature like runtime switching to another perf data file,
this variable can also help.

Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1351569369-26732-2-git-send-email-feng.tang@intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent cdd059d7
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@

struct perf_annotate {
	struct perf_tool tool;
	char const *input_name;
	bool	   force, use_tui, use_stdio;
	bool	   full_paths;
	bool	   print_line;
@@ -175,7 +174,7 @@ static int __cmd_annotate(struct perf_annotate *ann)
	struct perf_evsel *pos;
	u64 total_nr_samples;

	session = perf_session__new(ann->input_name, O_RDONLY,
	session = perf_session__new(input_name, O_RDONLY,
				    ann->force, false, &ann->tool);
	if (session == NULL)
		return -ENOMEM;
@@ -260,7 +259,7 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
		},
	};
	const struct option options[] = {
	OPT_STRING('i', "input", &annotate.input_name, "file",
	OPT_STRING('i', "input", &input_name, "file",
		    "input file name"),
	OPT_STRING('d', "dsos", &symbol_conf.dso_list_str, "dso[,dso...]",
		   "only consider symbols in these dsos"),
+2 −4
Original line number Diff line number Diff line
@@ -44,8 +44,7 @@ static int filename__fprintf_build_id(const char *name, FILE *fp)
	return fprintf(fp, "%s\n", sbuild_id);
}

static int perf_session__list_build_ids(const char *input_name,
					bool force, bool with_hits)
static int perf_session__list_build_ids(bool force, bool with_hits)
{
	struct perf_session *session;

@@ -81,7 +80,6 @@ int cmd_buildid_list(int argc, const char **argv,
	bool show_kernel = false;
	bool with_hits = false;
	bool force = false;
	const char *input_name = NULL;
	const struct option options[] = {
	OPT_BOOLEAN('H', "with-hits", &with_hits, "Show only DSOs with hits"),
	OPT_STRING('i', "input", &input_name, "file", "input file name"),
@@ -101,5 +99,5 @@ int cmd_buildid_list(int argc, const char **argv,
	if (show_kernel)
		return sysfs__fprintf_build_id(stdout);

	return perf_session__list_build_ids(input_name, force, with_hits);
	return perf_session__list_build_ids(force, with_hits);
}
+2 −3
Original line number Diff line number Diff line
@@ -48,12 +48,12 @@ static int __if_print(bool *first, const char *field, u64 value)

#define if_print(field) __if_print(&first, #field, pos->attr.field)

static int __cmd_evlist(const char *input_name, struct perf_attr_details *details)
static int __cmd_evlist(const char *file_name, struct perf_attr_details *details)
{
	struct perf_session *session;
	struct perf_evsel *pos;

	session = perf_session__new(input_name, O_RDONLY, 0, false, NULL);
	session = perf_session__new(file_name, O_RDONLY, 0, false, NULL);
	if (session == NULL)
		return -ENOMEM;

@@ -111,7 +111,6 @@ static int __cmd_evlist(const char *input_name, struct perf_attr_details *detail
int cmd_evlist(int argc, const char **argv, const char *prefix __maybe_unused)
{
	struct perf_attr_details details = { .verbose = false, };
	const char *input_name = NULL;
	const struct option options[] = {
	OPT_STRING('i', "input", &input_name, "file", "Input file name"),
	OPT_BOOLEAN('F', "freq", &details.freq, "Show the sample frequency"),
+2 −3
Original line number Diff line number Diff line
@@ -477,7 +477,7 @@ static void sort_result(void)
	__sort_result(&root_caller_stat, &root_caller_sorted, &caller_sort);
}

static int __cmd_kmem(const char *input_name)
static int __cmd_kmem(void)
{
	int err = -EINVAL;
	struct perf_session *session;
@@ -743,7 +743,6 @@ static int __cmd_record(int argc, const char **argv)
int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
{
	const char * const default_sort_order = "frag,hit,bytes";
	const char *input_name = NULL;
	const struct option kmem_options[] = {
	OPT_STRING('i', "input", &input_name, "file", "input file name"),
	OPT_CALLBACK_NOOPT(0, "caller", NULL, NULL,
@@ -779,7 +778,7 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused)
		if (list_empty(&alloc_sort))
			setup_sorting(&alloc_sort, default_sort_order);

		return __cmd_kmem(input_name);
		return __cmd_kmem();
	} else
		usage_with_options(kmem_usage, kmem_options);

+0 −2
Original line number Diff line number Diff line
@@ -335,8 +335,6 @@ alloc_failed:
	return NULL;
}

static const char *input_name;

struct trace_lock_handler {
	int (*acquire_event)(struct perf_evsel *evsel,
			     struct perf_sample *sample);
Loading