Skip to content

Commit

Permalink
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/acme/linux-2.6 into perf/core
  • Loading branch information
Ingo Molnar committed Feb 23, 2011
2 parents 768a06e + 9826e83 commit 9848caf
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 3 deletions.
12 changes: 10 additions & 2 deletions tools/perf/Documentation/perf-lock.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ and statistics with this 'perf lock' command.

'perf lock report' reports statistical data.

OPTIONS
-------
COMMON OPTIONS
--------------

-i::
--input=<file>::
Expand All @@ -39,6 +39,14 @@ OPTIONS
--dump-raw-trace::
Dump raw trace in ASCII.

REPORT OPTIONS
--------------

-k::
--key=<value>::
Sorting key. Possible values: acquired (default), contended,
wait_total, wait_max, wait_min.

SEE ALSO
--------
linkperf:perf[1]
2 changes: 1 addition & 1 deletion tools/perf/builtin-lock.c
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ static const char * const report_usage[] = {

static const struct option report_options[] = {
OPT_STRING('k', "key", &sort_key, "acquired",
"key for sorting"),
"key for sorting (acquired / contended / wait_total / wait_max / wait_min)"),
/* TODO: type */
OPT_END()
};
Expand Down
23 changes: 23 additions & 0 deletions tools/perf/util/ui/browsers/top.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ static void perf_top_browser__write(struct ui_browser *browser, void *entry, int
static void perf_top_browser__update_rb_tree(struct perf_top_browser *browser)
{
struct perf_top *top = browser->b.priv;
u64 top_idx = browser->b.top_idx;

browser->root = RB_ROOT;
browser->b.top = NULL;
Expand All @@ -82,7 +83,29 @@ static void perf_top_browser__update_rb_tree(struct perf_top_browser *browser)
if (browser->sym_width + browser->dso_width > browser->b.width - 29)
browser->sym_width = browser->b.width - browser->dso_width - 29;
}

/*
* Adjust the ui_browser indexes since the entries in the browser->root
* rb_tree may have changed, then seek it from start, so that we get a
* possible new top of the screen.
*/
browser->b.nr_entries = top->rb_entries;

if (top_idx >= browser->b.nr_entries) {
if (browser->b.height >= browser->b.nr_entries)
top_idx = browser->b.nr_entries - browser->b.height;
else
top_idx = 0;
}

if (browser->b.index >= top_idx + browser->b.height)
browser->b.index = top_idx + browser->b.index - browser->b.top_idx;

if (browser->b.index >= browser->b.nr_entries)
browser->b.index = browser->b.nr_entries - 1;

browser->b.top_idx = top_idx;
browser->b.seek(&browser->b, top_idx, SEEK_SET);
}

static void perf_top_browser__annotate(struct perf_top_browser *browser)
Expand Down

0 comments on commit 9848caf

Please sign in to comment.