linux/tools/perf
Arnaldo Carvalho de Melo 0f0cbf7aa3 perf ui: New hists tree widget
The stock newt checkbox tree widget we were using was not really
suitable for hist entry + callchain browsing.

The problems with it were manifold:

- We needed to traverse the whole hist_entry rb_tree to add each entry +
  callchains beforehand.

- No control over the colors used for each row

So a new tree widget, based mostly on slang, was written.

It extends the ui_browser class already used for annotate to allow the
user to fold/unfold branches in the callchains tree, using extra fields
in the symbol_map class that is embedded in hist_entry and
callchain_node instances to store the folding state and when changing
this state calculates the number of rows that are produced when showing
a particular hist_entry instance.

This greatly speeds up browsing as we don't have to upfront touch all
the entries and only calculate callchain related operations when some
callchain branch is actually unfolded.

The memory footprint is also reduced as the data structure is not
duplicated, just some extra fields for controling callchain state and to
simplify the process of seeking thru entries (nr_rows, row_offset) were
added.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-07-27 11:24:31 -03:00
..
Documentation perf probe: Support tracing an entry of array 2010-07-05 18:50:27 -03:00
arch Merge branch 'linus' into perf/core 2010-07-21 21:43:06 +02:00
bench perf options: Check v type in OPT_U?INTEGER 2010-05-17 15:43:38 -03:00
scripts perf scripts python: Give field dict to unhandled callback 2010-06-01 06:12:35 -03:00
util perf ui: New hists tree widget 2010-07-27 11:24:31 -03:00
.gitignore perf tools: .gitignore += config.make config.make.autogen 2010-06-17 10:24:31 -03:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
MANIFEST perf tools: Make target to generate self contained source tarball 2010-06-05 09:33:35 -03:00
Makefile perf tools: Fix fallback to cplus_demangle() when bfd_demangle() is not available 2010-07-02 10:01:58 -03:00
builtin-annotate.c perf tools: Make event__preprocess_sample parse the sample 2010-06-05 09:35:19 -03:00
builtin-bench.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
builtin-buildid-cache.c perf buildid: add perfconfig option to specify buildid cache dir 2010-06-05 09:34:04 -03:00
builtin-buildid-list.c perf buildid-list: Fix --with-hits event processing 2010-06-01 16:16:11 -03:00
builtin-diff.c perf tools: Make event__preprocess_sample parse the sample 2010-06-05 09:35:19 -03:00
builtin-help.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
builtin-inject.c perf inject: Add missing bits 2010-05-04 10:48:22 -03:00
builtin-kmem.c perf: add perf-inject builtin 2010-05-02 13:36:56 -03:00
builtin-kvm.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
builtin-list.c perf list: Fix large list output by using the pager 2009-08-13 09:05:48 +02:00
builtin-lock.c perf options: Type check OPT_BOOLEAN and fix the offenders 2010-05-17 16:22:37 -03:00
builtin-probe.c perf probe: Add kernel source path option 2010-06-17 10:27:57 -03:00
builtin-record.c Merge branch 'linus' into perf/core 2010-06-28 22:33:24 +02:00
builtin-report.c Merge branch 'linus' into perf/core 2010-07-21 21:43:06 +02:00
builtin-sched.c perf: Use event__process_task from perf sched 2010-06-01 00:10:32 +02:00
builtin-stat.c perf tools: Add the ability to specify list of cpus to monitor 2010-06-05 09:33:01 -03:00
builtin-test.c perf options: Type check OPT_BOOLEAN and fix the offenders 2010-05-17 16:22:37 -03:00
builtin-timechart.c x86 cpufreq, perf: Make trace_power_frequency cpufreq driver independent 2010-07-22 12:08:27 +02:00
builtin-top.c perf tools: Make event__preprocess_sample parse the sample 2010-06-05 09:35:19 -03:00
builtin-trace.c perf: Report lost events in perf trace debug mode 2010-06-24 23:36:23 +02:00
builtin.h perf: add perf-inject builtin 2010-05-02 13:36:56 -03:00
command-list.txt perf inject: Add missing bits 2010-05-04 10:48:22 -03:00
design.txt perf: Fix few typos + cosmetics 2010-01-13 17:39:44 +01:00
feature-tests.mak perf tools: Reorganize the Makefile feature tests 2010-06-09 16:57:39 -03:00
perf-archive.sh perf buildid: add perfconfig option to specify buildid cache dir 2010-06-05 09:34:04 -03:00
perf.c perf buildid: add perfconfig option to specify buildid cache dir 2010-06-05 09:34:04 -03:00
perf.h perf options: Type check OPT_BOOLEAN and fix the offenders 2010-05-17 16:22:37 -03:00