Commit 4a018cc4 authored by Adrian Hunter's avatar Adrian Hunter Committed by Ingo Molnar

perf jit: Move clockid validation

Move clockid validation into jit_process() so it can later be made
conditional.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1457005856-6143-6-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 570735b3
...@@ -729,23 +729,6 @@ static int __cmd_inject(struct perf_inject *inject) ...@@ -729,23 +729,6 @@ static int __cmd_inject(struct perf_inject *inject)
return ret; return ret;
} }
#ifdef HAVE_LIBELF_SUPPORT
static int
jit_validate_events(struct perf_session *session)
{
struct perf_evsel *evsel;
/*
* check that all events use CLOCK_MONOTONIC
*/
evlist__for_each(session->evlist, evsel) {
if (evsel->attr.use_clockid == 0 || evsel->attr.clockid != CLOCK_MONOTONIC)
return -1;
}
return 0;
}
#endif
int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
{ {
struct perf_inject inject = { struct perf_inject inject = {
...@@ -852,13 +835,6 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -852,13 +835,6 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
} }
#ifdef HAVE_LIBELF_SUPPORT #ifdef HAVE_LIBELF_SUPPORT
if (inject.jit_mode) { if (inject.jit_mode) {
/*
* validate event is using the correct clockid
*/
if (jit_validate_events(inject.session)) {
fprintf(stderr, "error, jitted code must be sampled with perf record -k 1\n");
return -1;
}
inject.tool.mmap2 = perf_event__jit_repipe_mmap2; inject.tool.mmap2 = perf_event__jit_repipe_mmap2;
inject.tool.mmap = perf_event__jit_repipe_mmap; inject.tool.mmap = perf_event__jit_repipe_mmap;
inject.tool.ordered_events = true; inject.tool.ordered_events = true;
......
...@@ -98,6 +98,21 @@ jit_close(struct jit_buf_desc *jd) ...@@ -98,6 +98,21 @@ jit_close(struct jit_buf_desc *jd)
jd->in = NULL; jd->in = NULL;
} }
static int
jit_validate_events(struct perf_session *session)
{
struct perf_evsel *evsel;
/*
* check that all events use CLOCK_MONOTONIC
*/
evlist__for_each(session->evlist, evsel) {
if (evsel->attr.use_clockid == 0 || evsel->attr.clockid != CLOCK_MONOTONIC)
return -1;
}
return 0;
}
static int static int
jit_open(struct jit_buf_desc *jd, const char *name) jit_open(struct jit_buf_desc *jd, const char *name)
{ {
...@@ -157,6 +172,14 @@ jit_open(struct jit_buf_desc *jd, const char *name) ...@@ -157,6 +172,14 @@ jit_open(struct jit_buf_desc *jd, const char *name)
goto error; goto error;
} }
/*
* validate event is using the correct clockid
*/
if (jit_validate_events(jd->session)) {
pr_err("error, jitted code must be sampled with perf record -k 1\n");
goto error;
}
bs = header.total_size - sizeof(header); bs = header.total_size - sizeof(header);
if (bs > bsz) { if (bs > bsz) {
......
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