perf tools: Remove references to struct ip_event
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 27 Aug 2013 08:23:06 +0000 (11:23 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 29 Aug 2013 18:29:28 +0000 (15:29 -0300)
The ip_event struct assumes fixed positions for ip, pid and tid.  That
is no longer true with the addition of PERF_SAMPLE_IDENTIFIER.  The
information is anyway in struct sample, so use that instead.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1377591794-30553-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-inject.c
tools/perf/builtin-kmem.c
tools/perf/builtin-mem.c
tools/perf/builtin-script.c
tools/perf/builtin-top.c
tools/perf/tests/hists_link.c
tools/perf/util/build-id.c
tools/perf/util/event.c
tools/perf/util/event.h
tools/perf/util/evsel.c
tools/perf/util/session.c

index 0d4ae1dd7b60e6128293ca16a4a82e35123a0215..ffacd464f9f6bb53f56ff402adcb3d419f883a26 100644 (file)
@@ -198,7 +198,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool,
 
        cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
 
-       thread = machine__findnew_thread(machine, event->ip.pid, event->ip.pid);
+       thread = machine__findnew_thread(machine, sample->pid, sample->pid);
        if (thread == NULL) {
                pr_err("problem processing %d event, skipping it.\n",
                       event->header.type);
@@ -206,7 +206,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool,
        }
 
        thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION,
-                             event->ip.ip, &al);
+                             sample->ip, &al);
 
        if (al.map != NULL) {
                if (!al.map->dso->hit) {
index c32477837cb0eb227cd8c28801779c1af31434e9..c2dff9cb1f2ce1ac150401d7b859229beb53998e 100644 (file)
@@ -305,8 +305,8 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
                                struct perf_evsel *evsel,
                                struct machine *machine)
 {
-       struct thread *thread = machine__findnew_thread(machine, event->ip.pid,
-                                                       event->ip.pid);
+       struct thread *thread = machine__findnew_thread(machine, sample->pid,
+                                                       sample->pid);
 
        if (thread == NULL) {
                pr_debug("problem processing %d event, skipping it.\n",
index 706a1faa9559e27dc515850017a29d5c10780b43..791b432df84731d8d9746a77760095710198614d 100644 (file)
@@ -94,7 +94,7 @@ dump_raw_samples(struct perf_tool *tool,
                symbol_conf.field_sep,
                sample->tid,
                symbol_conf.field_sep,
-               event->ip.ip,
+               sample->ip,
                symbol_conf.field_sep,
                sample->addr,
                symbol_conf.field_sep,
index d82712f169b34f6e323f35fb72fbe605c8576c78..93a34cef9676993b4f53ea16ab1aa6b34a37165d 100644 (file)
@@ -501,8 +501,8 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
                                struct machine *machine)
 {
        struct addr_location al;
-       struct thread *thread = machine__findnew_thread(machine, event->ip.pid,
-                                                       event->ip.tid);
+       struct thread *thread = machine__findnew_thread(machine, sample->pid,
+                                                       sample->tid);
 
        if (thread == NULL) {
                pr_debug("problem processing %d event, skipping it.\n",
index e37521fc715a7313df807380376c326ab5d3e6bd..212214162bb2820286694417035e470e1d465e76 100644 (file)
@@ -689,7 +689,7 @@ static void perf_event__process_sample(struct perf_tool *tool,
 {
        struct perf_top *top = container_of(tool, struct perf_top, tool);
        struct symbol *parent = NULL;
-       u64 ip = event->ip.ip;
+       u64 ip = sample->ip;
        struct addr_location al;
        int err;
 
@@ -699,10 +699,10 @@ static void perf_event__process_sample(struct perf_tool *tool,
                if (!seen)
                        seen = intlist__new(NULL);
 
-               if (!intlist__has_entry(seen, event->ip.pid)) {
+               if (!intlist__has_entry(seen, sample->pid)) {
                        pr_err("Can't find guest [%d]'s kernel information\n",
-                               event->ip.pid);
-                       intlist__add(seen, event->ip.pid);
+                               sample->pid);
+                       intlist__add(seen, sample->pid);
                }
                return;
        }
@@ -836,7 +836,8 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
                        break;
                case PERF_RECORD_MISC_GUEST_KERNEL:
                        ++top->guest_kernel_samples;
-                       machine = perf_session__find_machine(session, event->ip.pid);
+                       machine = perf_session__find_machine(session,
+                                                            sample.pid);
                        break;
                case PERF_RECORD_MISC_GUEST_USER:
                        ++top->guest_us_samples;
index 87f9f7280c4012ede9825c66abbce22628f4e394..4228ffc0d9681d7acda97ecacccf8bea9b76f1e4 100644 (file)
@@ -211,15 +211,13 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
        list_for_each_entry(evsel, &evlist->entries, node) {
                for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) {
                        const union perf_event event = {
-                               .ip = {
-                                       .header = {
-                                               .misc = PERF_RECORD_MISC_USER,
-                                       },
-                                       .pid = fake_common_samples[k].pid,
-                                       .ip  = fake_common_samples[k].ip,
+                               .header = {
+                                       .misc = PERF_RECORD_MISC_USER,
                                },
                        };
 
+                       sample.pid = fake_common_samples[k].pid;
+                       sample.ip = fake_common_samples[k].ip;
                        if (perf_event__preprocess_sample(&event, machine, &al,
                                                          &sample) < 0)
                                goto out;
@@ -235,15 +233,13 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
 
                for (k = 0; k < ARRAY_SIZE(fake_samples[i]); k++) {
                        const union perf_event event = {
-                               .ip = {
-                                       .header = {
-                                               .misc = PERF_RECORD_MISC_USER,
-                                       },
-                                       .pid = fake_samples[i][k].pid,
-                                       .ip  = fake_samples[i][k].ip,
+                               .header = {
+                                       .misc = PERF_RECORD_MISC_USER,
                                },
                        };
 
+                       sample.pid = fake_samples[i][k].pid;
+                       sample.ip = fake_samples[i][k].ip;
                        if (perf_event__preprocess_sample(&event, machine, &al,
                                                          &sample) < 0)
                                goto out;
index 0f9d27a6bc8f8b331008aabfe12ec2860849cc74..fb584092eb8839f004d16a673c9e42cf859ec0fe 100644 (file)
 
 int build_id__mark_dso_hit(struct perf_tool *tool __maybe_unused,
                           union perf_event *event,
-                          struct perf_sample *sample __maybe_unused,
+                          struct perf_sample *sample,
                           struct perf_evsel *evsel __maybe_unused,
                           struct machine *machine)
 {
        struct addr_location al;
        u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
-       struct thread *thread = machine__findnew_thread(machine, event->ip.pid,
-                                                       event->ip.pid);
+       struct thread *thread = machine__findnew_thread(machine, sample->pid,
+                                                       sample->pid);
 
        if (thread == NULL) {
                pr_err("problem processing %d event, skipping it.\n",
@@ -34,7 +34,7 @@ int build_id__mark_dso_hit(struct perf_tool *tool __maybe_unused,
        }
 
        thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION,
-                             event->ip.ip, &al);
+                             sample->ip, &al);
 
        if (al.map != NULL)
                al.map->dso->hit = 1;
index 61cecf9caff1b88a1d401070345387b7417fdc5c..8d51f21107aa47b0b0cb97e97ec09cefec6e1804 100644 (file)
@@ -686,8 +686,8 @@ int perf_event__preprocess_sample(const union perf_event *event,
                                  struct perf_sample *sample)
 {
        u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
-       struct thread *thread = machine__findnew_thread(machine, event->ip.pid,
-                                                       event->ip.pid);
+       struct thread *thread = machine__findnew_thread(machine, sample->pid,
+                                                       sample->pid);
 
        if (thread == NULL)
                return -1;
@@ -709,7 +709,7 @@ int perf_event__preprocess_sample(const union perf_event *event,
                machine__create_kernel_maps(machine);
 
        thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION,
-                             event->ip.ip, al);
+                             sample->ip, al);
        dump_printf(" ...... dso: %s\n",
                    al->map ? al->map->dso->long_name :
                        al->level == 'H' ? "[hypervisor]" : "<not found>");
index 15db071d96b568693c360645f4757c5e23c54ad1..19d911c011cdc5289d2922c102a82587c475c092 100644 (file)
@@ -8,16 +8,6 @@
 #include "map.h"
 #include "build-id.h"
 
-/*
- * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
- */
-struct ip_event {
-       struct perf_event_header header;
-       u64 ip;
-       u32 pid, tid;
-       unsigned char __more_data[];
-};
-
 struct mmap_event {
        struct perf_event_header header;
        u32 pid, tid;
@@ -166,7 +156,6 @@ struct tracing_data_event {
 
 union perf_event {
        struct perf_event_header        header;
-       struct ip_event                 ip;
        struct mmap_event               mmap;
        struct comm_event               comm;
        struct fork_event               fork;
index 9a5fb23ff8e2d9b4f91dd3bdaf6155c2b0a6ceb9..7e328c47f3b65f7b2c982e638b6f2f3cbb80ce8b 100644 (file)
@@ -1185,7 +1185,7 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event,
                return -EFAULT;
 
        if (type & PERF_SAMPLE_IP) {
-               data->ip = event->ip.ip;
+               data->ip = *array;
                array++;
        }
 
@@ -1397,7 +1397,7 @@ int perf_event__synthesize_sample(union perf_event *event, u64 type,
        array = event->sample.array;
 
        if (type & PERF_SAMPLE_IP) {
-               event->ip.ip = sample->ip;
+               *array = sample->ip;
                array++;
        }
 
index 07590c3c68b85ec13d0a4174c6ebaafbaea8379e..c3ac483be48e711109e4eeec50b39d3232111077 100644 (file)
@@ -840,7 +840,8 @@ static void dump_sample(struct perf_evsel *evsel, union perf_event *event,
 
 static struct machine *
        perf_session__find_machine_for_cpumode(struct perf_session *session,
-                                              union perf_event *event)
+                                              union perf_event *event,
+                                              struct perf_sample *sample)
 {
        const u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
 
@@ -852,7 +853,7 @@ static struct machine *
                if (event->header.type == PERF_RECORD_MMAP)
                        pid = event->mmap.pid;
                else
-                       pid = event->ip.pid;
+                       pid = sample->pid;
 
                return perf_session__findnew_machine(session, pid);
        }
@@ -958,7 +959,8 @@ static int perf_session_deliver_event(struct perf_session *session,
                hists__inc_nr_events(&evsel->hists, event->header.type);
        }
 
-       machine = perf_session__find_machine_for_cpumode(session, event);
+       machine = perf_session__find_machine_for_cpumode(session, event,
+                                                        sample);
 
        switch (event->header.type) {
        case PERF_RECORD_SAMPLE: