perf jit: Let jit_process() return errors
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 7 Mar 2016 19:44:40 +0000 (16:44 -0300)
committerIngo Molnar <mingo@kernel.org>
Tue, 8 Mar 2016 09:11:17 +0000 (10:11 +0100)
In preparation for moving clockid validation into jit_process().

Previously a return value of zero meant the processing had been done and
non-zero meant either the processing was not done (i.e. not the jitdump
file mmap event) or an error occurred.

Change it so that zero means the processing was not done, one means the
processing was done and successful, and negative values are an error.

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-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
tools/perf/builtin-inject.c
tools/perf/util/jitdump.c

index c6a4f2f94ab127350c44ae9017f24e8f35641f44..2512d71ca386954101f2f7ba37ca1daf10efe356 100644 (file)
@@ -253,12 +253,16 @@ static int perf_event__jit_repipe_mmap(struct perf_tool *tool,
 {
        struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
        u64 n = 0;
+       int ret;
 
        /*
         * if jit marker, then inject jit mmaps and generate ELF images
         */
-       if (!jit_process(inject->session, &inject->output, machine,
-                        event->mmap.filename, sample->pid, &n)) {
+       ret = jit_process(inject->session, &inject->output, machine,
+                         event->mmap.filename, sample->pid, &n);
+       if (ret < 0)
+               return ret;
+       if (ret) {
                inject->bytes_written += n;
                return 0;
        }
@@ -287,12 +291,16 @@ static int perf_event__jit_repipe_mmap2(struct perf_tool *tool,
 {
        struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
        u64 n = 0;
+       int ret;
 
        /*
         * if jit marker, then inject jit mmaps and generate ELF images
         */
-       if (!jit_process(inject->session, &inject->output, machine,
-                         event->mmap2.filename, sample->pid, &n)) {
+       ret = jit_process(inject->session, &inject->output, machine,
+                         event->mmap2.filename, sample->pid, &n);
+       if (ret < 0)
+               return ret;
+       if (ret) {
                inject->bytes_written += n;
                return 0;
        }
index 99fa5eee9fe075f304a6a00483f628490688b1fd..bd9e44f9fff2446d488f5950075904915db6c7a5 100644 (file)
@@ -647,7 +647,7 @@ jit_process(struct perf_session *session,
         * first, detect marker mmap (i.e., the jitdump mmap)
         */
        if (jit_detect(filename, pid))
-               return -1;
+               return 0;
 
        memset(&jd, 0, sizeof(jd));
 
@@ -665,8 +665,10 @@ jit_process(struct perf_session *session,
        *nbytes = 0;
 
        ret = jit_inject(&jd, filename);
-       if (!ret)
+       if (!ret) {
                *nbytes = jd.bytes_written;
+               ret = 1;
+       }
 
        return ret;
 }