提交 3ba78bd0 编写于 作者: J Jiri Olsa 提交者: Arnaldo Carvalho de Melo

perf stat record: Initialize record features

Disabling all non stat related features.

Also as we now enable STAT feature in the data file, adding code to
instruct session open to skip sample type checking for stat data files.
Signed-off-by: NJiri Olsa <jolsa@kernel.org>
Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: NKan Liang <kan.liang@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1446734469-11352-4-git-send-email-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 4979d0c7
...@@ -1310,6 +1310,19 @@ static const char * const recort_usage[] = { ...@@ -1310,6 +1310,19 @@ static const char * const recort_usage[] = {
NULL, NULL,
}; };
static void init_features(struct perf_session *session)
{
int feat;
for (feat = HEADER_FIRST_FEATURE; feat < HEADER_LAST_FEATURE; feat++)
perf_header__set_feat(&session->header, feat);
perf_header__clear_feat(&session->header, HEADER_BUILD_ID);
perf_header__clear_feat(&session->header, HEADER_TRACING_DATA);
perf_header__clear_feat(&session->header, HEADER_BRANCH_STACK);
perf_header__clear_feat(&session->header, HEADER_AUXTRACE);
}
static int __cmd_record(int argc, const char **argv) static int __cmd_record(int argc, const char **argv)
{ {
struct perf_session *session; struct perf_session *session;
...@@ -1331,6 +1344,8 @@ static int __cmd_record(int argc, const char **argv) ...@@ -1331,6 +1344,8 @@ static int __cmd_record(int argc, const char **argv)
if (perf_stat.file.is_pipe) if (perf_stat.file.is_pipe)
return -EINVAL; return -EINVAL;
init_features(session);
session->evlist = evsel_list; session->evlist = evsel_list;
perf_stat.session = session; perf_stat.session = session;
perf_stat.record = true; perf_stat.record = true;
......
...@@ -37,6 +37,9 @@ static int perf_session__open(struct perf_session *session) ...@@ -37,6 +37,9 @@ static int perf_session__open(struct perf_session *session)
if (perf_data_file__is_pipe(file)) if (perf_data_file__is_pipe(file))
return 0; return 0;
if (perf_header__has_feat(&session->header, HEADER_STAT))
return 0;
if (!perf_evlist__valid_sample_type(session->evlist)) { if (!perf_evlist__valid_sample_type(session->evlist)) {
pr_err("non matching sample_type\n"); pr_err("non matching sample_type\n");
return -1; return -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册