perf jit: Move clockid validation
Move clockid validation into jit_process() so it can later be made conditional. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Arnaldo 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.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
570735b33d
commit
4a018cc479
|
@ -729,23 +729,6 @@ static int __cmd_inject(struct perf_inject *inject)
|
|||
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)
|
||||
{
|
||||
struct perf_inject inject = {
|
||||
|
@ -852,13 +835,6 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
|
|||
}
|
||||
#ifdef HAVE_LIBELF_SUPPORT
|
||||
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.mmap = perf_event__jit_repipe_mmap;
|
||||
inject.tool.ordered_events = true;
|
||||
|
|
|
@ -98,6 +98,21 @@ jit_close(struct jit_buf_desc *jd)
|
|||
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
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
|
||||
if (bs > bsz) {
|
||||
|
|
Loading…
Reference in New Issue