linux/tools/perf
Don Zickus bfd66cc71a perf tools: Fix synthesizing mmaps for threads
Currently if a process creates a bunch of threads using pthread_create
and then perf is run in system_wide mode, the mmaps for those threads
are not captured with a synthesized mmap event.

The reason is those threads are not visible when walking the /proc/
directory looking for /proc/<pid>/maps files.  Instead they are
discovered using the /proc/<pid>/tasks file (which the synthesized comm
event uses).

This causes problems when a program is trying to map a data address to a
tid.  Because the tid has no maps, the event is dropped.  Changing the
program to look up using the pid instead of the tid, finds the correct
maps but creates ugly hacks in the program to carry the correct tid
around.

Fix this by moving the walking of the /proc/<pid>/tasks up a level (out
of the comm function) based on Arnaldo's suggestion.

Tweaked things a bit to special case the 'full' bit and 'guest' check.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1393429527-167840-2-git-send-email-dzickus@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2014-03-14 11:20:44 -03:00
..
arch perf tools: Setup default dwarf post unwinder 2014-02-24 09:29:36 -03:00
bench perf bench: Add futex-requeue microbenchmark 2014-03-14 11:20:44 -03:00
config Merge branch 'perf/urgent' into perf/core 2014-03-11 11:53:50 +01:00
Documentation perf probe: Clarify x86 register naming for perf probe 2014-03-14 11:20:44 -03:00
python perf python: Remove duplicate TID bit from mask 2013-08-07 17:35:25 -03:00
scripts perf tools: Finish the removal of 'self' arguments 2013-11-05 15:32:36 -03:00
tests perf tests: Add NO_LIBDW_DWARF_UNWIND make test 2014-02-24 09:29:37 -03:00
ui perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
util perf tools: Fix synthesizing mmaps for threads 2014-03-14 11:20:44 -03:00
.gitignore perf tools: Ignore 'perf timechart' output file 2013-10-11 12:17:37 -03:00
builtin-annotate.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-bench.c perf bench: Add futex-requeue microbenchmark 2014-03-14 11:20:44 -03:00
builtin-buildid-cache.c perf buildid-cache: Check relocation when checking for existing kcore 2014-01-31 17:21:54 -03:00
builtin-buildid-list.c perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
builtin-diff.c perf diff: Color the Weighted Diff column 2014-01-13 11:38:25 -03:00
builtin-evlist.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-help.c perf help: Fix --help for builtins 2012-10-22 12:35:49 -02:00
builtin-inject.c perf callchain: Add mask into struct regs_dump 2014-02-18 09:34:48 -03:00
builtin-kmem.c perf evsel: Ditch evsel->handler.data field 2013-11-07 10:40:47 -03:00
builtin-kvm.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-list.c perf list: Add usage 2013-11-05 14:26:41 -03:00
builtin-lock.c perf evsel: Ditch evsel->handler.data field 2013-11-07 10:40:47 -03:00
builtin-mem.c perf mem: Remove unused parameter from dump_raw_samples() 2013-12-19 17:03:39 -03:00
builtin-probe.c perf probe: Replace line_list with intlist 2014-02-18 09:34:50 -03:00
builtin-record.c perf callchain: Introduce HAVE_DWARF_UNWIND_SUPPORT macro 2014-02-18 09:34:48 -03:00
builtin-report.c Merge branch 'perf/urgent' into perf/core 2014-03-11 11:53:50 +01:00
builtin-sched.c perf tools: Use zfree to help detect use after free bugs 2013-12-27 17:08:19 -03:00
builtin-script.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-stat.c perf evlist: Introduce evlist__for_each() & friends 2014-01-13 10:06:25 -03:00
builtin-timechart.c perf timechart: Fix wrong SVG height 2014-01-20 16:19:08 -03:00
builtin-top.c Merge branch 'perf/urgent' into perf/core 2014-03-11 11:53:50 +01:00
builtin-trace.c perf trace: Decode architecture-specific signal numbers 2014-03-10 11:10:45 -03:00
builtin.h perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
command-list.txt perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
CREDITS
design.txt perf/doc: Remove mention of non-existent set_perf_event_pending() from design.txt 2014-01-26 09:37:48 +01:00
Makefile perf tools: Add 'build-test' make target 2014-01-16 16:26:26 -03:00
Makefile.perf perf bench: Add futex-requeue microbenchmark 2014-03-14 11:20:44 -03:00
MANIFEST perf tools: Move hash.h header 2014-02-18 09:34:49 -03:00
perf-archive.sh perf archive: Make 'f' the last parameter for tar 2012-09-17 13:10:42 -03:00
perf-completion.sh perf completion: Complete 'perf kvm' 2013-12-13 10:30:21 -03:00
perf.c tools/: Convert to new topic libraries 2013-12-16 16:03:27 -03:00
perf.h perf bench: Add futex-hash microbenchmark 2014-03-14 11:20:43 -03:00