mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-05 22:28:00 +00:00
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
2 changed files with 23 additions and 24 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
#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)
|
||||||
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)
|
||||||
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) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue