Commit 3ba78bd0 authored by Jiri Olsa's avatar Jiri Olsa Committed by 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: default avatarJiri Olsa <jolsa@kernel.org>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: default avatarKan 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 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%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment