]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - tools/perf/util/event.c
perf record: Mark MAP_HUGETLB when synthesizing mmap events
[mirror_ubuntu-artful-kernel.git] / tools / perf / util / event.c
index 9ad7d32dba2bc59c23aaf88262e48d660a921a28..6c3017139c67d9a55e331e9b0bf29c30124ec033 100644 (file)
@@ -1,5 +1,6 @@
 #include <linux/types.h>
 #include <sys/mman.h>
+#include <api/fs/fs.h>
 #include "event.h"
 #include "debug.h"
 #include "hist.h"
@@ -248,6 +249,10 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
        bool truncation = false;
        unsigned long long timeout = proc_map_timeout * 1000000ULL;
        int rc = 0;
+#ifdef MAP_HUGETLB
+       const char *hugetlbfs_mnt = hugetlbfs__mountpoint();
+       int hugetlbfs_mnt_len = hugetlbfs_mnt ? strlen(hugetlbfs_mnt) : 0;
+#endif
 
        if (machine__is_default_guest(machine))
                return 0;
@@ -342,6 +347,12 @@ out:
 
                if (!strcmp(execname, ""))
                        strcpy(execname, anonstr);
+#ifdef MAP_HUGETLB
+               if (!strncmp(execname, hugetlbfs_mnt, hugetlbfs_mnt_len)) {
+                       strcpy(execname, anonstr);
+                       event->mmap2.flags |= MAP_HUGETLB;
+               }
+#endif
 
                size = strlen(execname) + 1;
                memcpy(event->mmap2.filename, execname, size);