]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - tools/perf/util/event.c
Merge remote-tracking branch 'ipsec/master'
[karo-tx-linux.git] / tools / perf / util / event.c
index 7ff61274ed57f5219416c69767fac9acca21e091..8b10621b415c684564a6dd5af130ebc9d3ab33c7 100644 (file)
@@ -67,7 +67,8 @@ static int perf_event__get_comm_ids(pid_t pid, char *comm, size_t len,
        char filename[PATH_MAX];
        char bf[4096];
        int fd;
-       size_t size = 0, n;
+       size_t size = 0;
+       ssize_t n;
        char *nl, *name, *tgids, *ppids;
 
        *tgid = -1;
@@ -167,7 +168,7 @@ static int perf_event__prepare_comm(union perf_event *event, pid_t pid,
        return 0;
 }
 
-static pid_t perf_event__synthesize_comm(struct perf_tool *tool,
+pid_t perf_event__synthesize_comm(struct perf_tool *tool,
                                         union perf_event *event, pid_t pid,
                                         perf_event__handler_t process,
                                         struct machine *machine)
@@ -378,7 +379,7 @@ int perf_event__synthesize_modules(struct perf_tool *tool,
        for (pos = maps__first(maps); pos; pos = map__next(pos)) {
                size_t size;
 
-               if (pos->dso->kernel)
+               if (__map__is_kernel(pos))
                        continue;
 
                size = PERF_ALIGN(pos->dso->long_name_len + 1, sizeof(u64));
@@ -649,12 +650,12 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
        size_t size;
        const char *mmap_name;
        char name_buff[PATH_MAX];
-       struct map *map;
+       struct map *map = machine__kernel_map(machine);
        struct kmap *kmap;
        int err;
        union perf_event *event;
 
-       if (machine->vmlinux_maps[0] == NULL)
+       if (map == NULL)
                return -1;
 
        /*
@@ -680,7 +681,6 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
                event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL;
        }
 
-       map = machine->vmlinux_maps[MAP__FUNCTION];
        kmap = map__kmap(map);
        size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
                        "%s%s", mmap_name, kmap->ref_reloc_sym->name) + 1;
@@ -1008,7 +1008,7 @@ int perf_event__preprocess_sample(const union perf_event *event,
         * it now.
         */
        if (cpumode == PERF_RECORD_MISC_KERNEL &&
-           machine->vmlinux_maps[MAP__FUNCTION] == NULL)
+           machine__kernel_map(machine) == NULL)
                machine__create_kernel_maps(machine);
 
        thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al);
@@ -1021,6 +1021,14 @@ int perf_event__preprocess_sample(const union perf_event *event,
 
        al->sym = NULL;
        al->cpu = sample->cpu;
+       al->socket = -1;
+
+       if (al->cpu >= 0) {
+               struct perf_env *env = machine->env;
+
+               if (env && env->cpu)
+                       al->socket = env->cpu[al->cpu].socket_id;
+       }
 
        if (al->map) {
                struct dso *dso = al->map->dso;