From: tip-bot for Arnaldo Carvalho de Melo <acme@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, acme@redhat.com, hpa@zytor.com,
mingo@redhat.com, tglx@linutronix.de
Subject: [tip:perf/core] perf ui: Move hists browser to util/ui/browsers/
Date: Wed, 11 Aug 2010 07:41:58 GMT [thread overview]
Message-ID: <tip-d1b4f2491c3341c61c752049f73ba12553f978d8@git.kernel.org> (raw)
In-Reply-To: <new-submission>
Commit-ID: d1b4f2491c3341c61c752049f73ba12553f978d8
Gitweb: http://git.kernel.org/tip/d1b4f2491c3341c61c752049f73ba12553f978d8
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Tue, 10 Aug 2010 15:49:07 -0300
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 10 Aug 2010 16:11:08 -0300
perf ui: Move hists browser to util/ui/browsers/
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile | 4 +
tools/perf/util/newt.c | 965 +---------------------
tools/perf/util/pstack.h | 2 +
tools/perf/util/{newt.c => ui/browsers/hists.c} | 1037 ++++++++++-------------
4 files changed, 454 insertions(+), 1554 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index d118020..62e4d6f 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -570,6 +570,7 @@ else
LIB_OBJS += $(OUTPUT)util/newt.o
LIB_OBJS += $(OUTPUT)util/ui/browser.o
LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o
+ LIB_OBJS += $(OUTPUT)util/ui/browsers/hists.o
LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o
LIB_OBJS += $(OUTPUT)util/ui/helpline.o
LIB_OBJS += $(OUTPUT)util/ui/progress.o
@@ -984,6 +985,9 @@ $(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS
$(OUTPUT)util/ui/browsers/annotate.o: util/ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
+$(OUTPUT)util/ui/browsers/hists.o: util/ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS
+ $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
+
$(OUTPUT)util/ui/browsers/map.o: util/ui/browsers/map.c $(OUTPUT)PERF-CFLAGS
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c
index b596926..6bccdaa 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/newt.c
@@ -1,24 +1,19 @@
-#define _GNU_SOURCE
-#include <stdio.h>
-#undef _GNU_SOURCE
-#include "ui/libslang.h"
-#include <signal.h>
-#include <stdlib.h>
-#include <elf.h>
#include <newt.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
#include <sys/ttydefaults.h>
#include "cache.h"
-#include "hist.h"
-#include "pstack.h"
-#include "session.h"
-#include "sort.h"
-#include "symbol.h"
+#include "debug.h"
#include "ui/browser.h"
#include "ui/helpline.h"
-#include "ui/browsers/map.h"
newtComponent newt_form__new(void);
+int popup_menu(int argc, char * const argv[]);
+int ui__help_window(const char *text);
+bool dialog_yesno(const char *msg);
char browser__last_msg[1024];
@@ -57,7 +52,7 @@ newtComponent newt_form__new(void)
return self;
}
-static int popup_menu(int argc, char * const argv[])
+int popup_menu(int argc, char * const argv[])
{
struct newtExitStruct es;
int i, rc = -1, max_len = 5;
@@ -91,7 +86,7 @@ out_destroy_form:
return rc;
}
-static int ui__help_window(const char *text)
+int ui__help_window(const char *text)
{
struct newtExitStruct es;
newtComponent tb, form = newt_form__new();
@@ -133,316 +128,13 @@ out_destroy_form:
return rc;
}
-static bool dialog_yesno(const char *msg)
+bool dialog_yesno(const char *msg)
{
/* newtWinChoice should really be accepting const char pointers... */
char yes[] = "Yes", no[] = "No";
return newtWinChoice(NULL, yes, no, (char *)msg) == 1;
}
-static char *callchain_list__sym_name(struct callchain_list *self,
- char *bf, size_t bfsize)
-{
- if (self->ms.sym)
- return self->ms.sym->name;
-
- snprintf(bf, bfsize, "%#Lx", self->ip);
- return bf;
-}
-
-struct hist_browser {
- struct ui_browser b;
- struct hists *hists;
- struct hist_entry *he_selection;
- struct map_symbol *selection;
-};
-
-static void hist_browser__reset(struct hist_browser *self);
-static int hist_browser__run(struct hist_browser *self, const char *title,
- struct newtExitStruct *es);
-static unsigned int hist_browser__refresh(struct ui_browser *self);
-static void ui_browser__hists_seek(struct ui_browser *self,
- off_t offset, int whence);
-
-static struct hist_browser *hist_browser__new(struct hists *hists)
-{
- struct hist_browser *self = zalloc(sizeof(*self));
-
- if (self) {
- self->hists = hists;
- self->b.refresh = hist_browser__refresh;
- self->b.seek = ui_browser__hists_seek;
- }
-
- return self;
-}
-
-static void hist_browser__delete(struct hist_browser *self)
-{
- newtFormDestroy(self->b.form);
- newtPopWindow();
- free(self);
-}
-
-static struct hist_entry *hist_browser__selected_entry(struct hist_browser *self)
-{
- return self->he_selection;
-}
-
-static struct thread *hist_browser__selected_thread(struct hist_browser *self)
-{
- return self->he_selection->thread;
-}
-
-static int hist_browser__title(char *bf, size_t size, const char *ev_name,
- const struct dso *dso, const struct thread *thread)
-{
- int printed = 0;
-
- if (thread)
- printed += snprintf(bf + printed, size - printed,
- "Thread: %s(%d)",
- (thread->comm_set ? thread->comm : ""),
- thread->pid);
- if (dso)
- printed += snprintf(bf + printed, size - printed,
- "%sDSO: %s", thread ? " " : "",
- dso->short_name);
- return printed ?: snprintf(bf, size, "Event: %s", ev_name);
-}
-
-int hists__browse(struct hists *self, const char *helpline, const char *ev_name)
-{
- struct hist_browser *browser = hist_browser__new(self);
- struct pstack *fstack;
- const struct thread *thread_filter = NULL;
- const struct dso *dso_filter = NULL;
- struct newtExitStruct es;
- char msg[160];
- int key = -1;
-
- if (browser == NULL)
- return -1;
-
- fstack = pstack__new(2);
- if (fstack == NULL)
- goto out;
-
- ui_helpline__push(helpline);
-
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
-
- while (1) {
- const struct thread *thread;
- const struct dso *dso;
- char *options[16];
- int nr_options = 0, choice = 0, i,
- annotate = -2, zoom_dso = -2, zoom_thread = -2,
- browse_map = -2;
-
- if (hist_browser__run(browser, msg, &es))
- break;
-
- thread = hist_browser__selected_thread(browser);
- dso = browser->selection->map ? browser->selection->map->dso : NULL;
-
- if (es.reason == NEWT_EXIT_HOTKEY) {
- key = es.u.key;
-
- switch (key) {
- case NEWT_KEY_F1:
- goto do_help;
- case NEWT_KEY_TAB:
- case NEWT_KEY_UNTAB:
- /*
- * Exit the browser, let hists__browser_tree
- * go to the next or previous
- */
- goto out_free_stack;
- default:;
- }
-
- key = toupper(key);
- switch (key) {
- case 'A':
- if (browser->selection->map == NULL &&
- browser->selection->map->dso->annotate_warned)
- continue;
- goto do_annotate;
- case 'D':
- goto zoom_dso;
- case 'T':
- goto zoom_thread;
- case 'H':
- case '?':
-do_help:
- ui__help_window("-> Zoom into DSO/Threads & Annotate current symbol\n"
- "<- Zoom out\n"
- "a Annotate current symbol\n"
- "h/?/F1 Show this window\n"
- "d Zoom into current DSO\n"
- "t Zoom into current Thread\n"
- "q/CTRL+C Exit browser");
- continue;
- default:;
- }
- if (is_exit_key(key)) {
- if (key == NEWT_KEY_ESCAPE) {
- if (dialog_yesno("Do you really want to exit?"))
- break;
- else
- continue;
- } else
- break;
- }
-
- if (es.u.key == NEWT_KEY_LEFT) {
- const void *top;
-
- if (pstack__empty(fstack))
- continue;
- top = pstack__pop(fstack);
- if (top == &dso_filter)
- goto zoom_out_dso;
- if (top == &thread_filter)
- goto zoom_out_thread;
- continue;
- }
- }
-
- if (browser->selection->sym != NULL &&
- !browser->selection->map->dso->annotate_warned &&
- asprintf(&options[nr_options], "Annotate %s",
- browser->selection->sym->name) > 0)
- annotate = nr_options++;
-
- if (thread != NULL &&
- asprintf(&options[nr_options], "Zoom %s %s(%d) thread",
- (thread_filter ? "out of" : "into"),
- (thread->comm_set ? thread->comm : ""),
- thread->pid) > 0)
- zoom_thread = nr_options++;
-
- if (dso != NULL &&
- asprintf(&options[nr_options], "Zoom %s %s DSO",
- (dso_filter ? "out of" : "into"),
- (dso->kernel ? "the Kernel" : dso->short_name)) > 0)
- zoom_dso = nr_options++;
-
- if (browser->selection->map != NULL &&
- asprintf(&options[nr_options], "Browse map details") > 0)
- browse_map = nr_options++;
-
- options[nr_options++] = (char *)"Exit";
-
- choice = popup_menu(nr_options, options);
-
- for (i = 0; i < nr_options - 1; ++i)
- free(options[i]);
-
- if (choice == nr_options - 1)
- break;
-
- if (choice == -1)
- continue;
-
- if (choice == annotate) {
- struct hist_entry *he;
-do_annotate:
- if (browser->selection->map->dso->origin == DSO__ORIG_KERNEL) {
- browser->selection->map->dso->annotate_warned = 1;
- ui_helpline__puts("No vmlinux file found, can't "
- "annotate with just a "
- "kallsyms file");
- continue;
- }
-
- he = hist_browser__selected_entry(browser);
- if (he == NULL)
- continue;
-
- hist_entry__tui_annotate(he);
- } else if (choice == browse_map)
- map__browse(browser->selection->map);
- else if (choice == zoom_dso) {
-zoom_dso:
- if (dso_filter) {
- pstack__remove(fstack, &dso_filter);
-zoom_out_dso:
- ui_helpline__pop();
- dso_filter = NULL;
- } else {
- if (dso == NULL)
- continue;
- ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s DSO\"",
- dso->kernel ? "the Kernel" : dso->short_name);
- dso_filter = dso;
- pstack__push(fstack, &dso_filter);
- }
- hists__filter_by_dso(self, dso_filter);
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
- hist_browser__reset(browser);
- } else if (choice == zoom_thread) {
-zoom_thread:
- if (thread_filter) {
- pstack__remove(fstack, &thread_filter);
-zoom_out_thread:
- ui_helpline__pop();
- thread_filter = NULL;
- } else {
- ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s(%d) thread\"",
- thread->comm_set ? thread->comm : "",
- thread->pid);
- thread_filter = thread;
- pstack__push(fstack, &thread_filter);
- }
- hists__filter_by_thread(self, thread_filter);
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
- hist_browser__reset(browser);
- }
- }
-out_free_stack:
- pstack__delete(fstack);
-out:
- hist_browser__delete(browser);
- return key;
-}
-
-int hists__tui_browse_tree(struct rb_root *self, const char *help)
-{
- struct rb_node *first = rb_first(self), *nd = first, *next;
- int key = 0;
-
- while (nd) {
- struct hists *hists = rb_entry(nd, struct hists, rb_node);
- const char *ev_name = __event_name(hists->type, hists->config);
-
- key = hists__browse(hists, help, ev_name);
-
- if (is_exit_key(key))
- break;
-
- switch (key) {
- case NEWT_KEY_TAB:
- next = rb_next(nd);
- if (next)
- nd = next;
- break;
- case NEWT_KEY_UNTAB:
- if (nd == first)
- continue;
- nd = rb_prev(nd);
- default:
- break;
- }
- }
-
- return key;
-}
-
static void newt_suspend(void *d __used)
{
newtSuspend();
@@ -476,638 +168,3 @@ void exit_browser(bool wait_for_ok)
newtFinished();
}
}
-
-static void hist_browser__refresh_dimensions(struct hist_browser *self)
-{
- /* 3 == +/- toggle symbol before actual hist_entry rendering */
- self->b.width = 3 + (hists__sort_list_width(self->hists) +
- sizeof("[k]"));
-}
-
-static void hist_browser__reset(struct hist_browser *self)
-{
- self->b.nr_entries = self->hists->nr_entries;
- hist_browser__refresh_dimensions(self);
- ui_browser__reset_index(&self->b);
-}
-
-static char tree__folded_sign(bool unfolded)
-{
- return unfolded ? '-' : '+';
-}
-
-static char map_symbol__folded(const struct map_symbol *self)
-{
- return self->has_children ? tree__folded_sign(self->unfolded) : ' ';
-}
-
-static char hist_entry__folded(const struct hist_entry *self)
-{
- return map_symbol__folded(&self->ms);
-}
-
-static char callchain_list__folded(const struct callchain_list *self)
-{
- return map_symbol__folded(&self->ms);
-}
-
-static bool map_symbol__toggle_fold(struct map_symbol *self)
-{
- if (!self->has_children)
- return false;
-
- self->unfolded = !self->unfolded;
- return true;
-}
-
-#define LEVEL_OFFSET_STEP 3
-
-static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *self,
- struct callchain_node *chain_node,
- u64 total, int level,
- unsigned short row,
- off_t *row_offset,
- bool *is_current_entry)
-{
- struct rb_node *node;
- int first_row = row, width, offset = level * LEVEL_OFFSET_STEP;
- u64 new_total, remaining;
-
- if (callchain_param.mode == CHAIN_GRAPH_REL)
- new_total = chain_node->children_hit;
- else
- new_total = total;
-
- remaining = new_total;
- node = rb_first(&chain_node->rb_root);
- while (node) {
- struct callchain_node *child = rb_entry(node, struct callchain_node, rb_node);
- struct rb_node *next = rb_next(node);
- u64 cumul = cumul_hits(child);
- struct callchain_list *chain;
- char folded_sign = ' ';
- int first = true;
- int extra_offset = 0;
-
- remaining -= cumul;
-
- list_for_each_entry(chain, &child->val, list) {
- char ipstr[BITS_PER_LONG / 4 + 1], *alloc_str;
- const char *str;
- int color;
- bool was_first = first;
-
- if (first) {
- first = false;
- chain->ms.has_children = chain->list.next != &child->val ||
- rb_first(&child->rb_root) != NULL;
- } else {
- extra_offset = LEVEL_OFFSET_STEP;
- chain->ms.has_children = chain->list.next == &child->val &&
- rb_first(&child->rb_root) != NULL;
- }
-
- folded_sign = callchain_list__folded(chain);
- if (*row_offset != 0) {
- --*row_offset;
- goto do_next;
- }
-
- alloc_str = NULL;
- str = callchain_list__sym_name(chain, ipstr, sizeof(ipstr));
- if (was_first) {
- double percent = cumul * 100.0 / new_total;
-
- if (asprintf(&alloc_str, "%2.2f%% %s", percent, str) < 0)
- str = "Not enough memory!";
- else
- str = alloc_str;
- }
-
- color = HE_COLORSET_NORMAL;
- width = self->b.width - (offset + extra_offset + 2);
- if (ui_browser__is_current_entry(&self->b, row)) {
- self->selection = &chain->ms;
- color = HE_COLORSET_SELECTED;
- *is_current_entry = true;
- }
-
- SLsmg_set_color(color);
- SLsmg_gotorc(self->b.y + row, self->b.x);
- slsmg_write_nstring(" ", offset + extra_offset);
- slsmg_printf("%c ", folded_sign);
- slsmg_write_nstring(str, width);
- free(alloc_str);
-
- if (++row == self->b.height)
- goto out;
-do_next:
- if (folded_sign == '+')
- break;
- }
-
- if (folded_sign == '-') {
- const int new_level = level + (extra_offset ? 2 : 1);
- row += hist_browser__show_callchain_node_rb_tree(self, child, new_total,
- new_level, row, row_offset,
- is_current_entry);
- }
- if (row == self->b.height)
- goto out;
- node = next;
- }
-out:
- return row - first_row;
-}
-
-static int hist_browser__show_callchain_node(struct hist_browser *self,
- struct callchain_node *node,
- int level, unsigned short row,
- off_t *row_offset,
- bool *is_current_entry)
-{
- struct callchain_list *chain;
- int first_row = row,
- offset = level * LEVEL_OFFSET_STEP,
- width = self->b.width - offset;
- char folded_sign = ' ';
-
- list_for_each_entry(chain, &node->val, list) {
- char ipstr[BITS_PER_LONG / 4 + 1], *s;
- int color;
- /*
- * FIXME: This should be moved to somewhere else,
- * probably when the callchain is created, so as not to
- * traverse it all over again
- */
- chain->ms.has_children = rb_first(&node->rb_root) != NULL;
- folded_sign = callchain_list__folded(chain);
-
- if (*row_offset != 0) {
- --*row_offset;
- continue;
- }
-
- color = HE_COLORSET_NORMAL;
- if (ui_browser__is_current_entry(&self->b, row)) {
- self->selection = &chain->ms;
- color = HE_COLORSET_SELECTED;
- *is_current_entry = true;
- }
-
- s = callchain_list__sym_name(chain, ipstr, sizeof(ipstr));
- SLsmg_gotorc(self->b.y + row, self->b.x);
- SLsmg_set_color(color);
- slsmg_write_nstring(" ", offset);
- slsmg_printf("%c ", folded_sign);
- slsmg_write_nstring(s, width - 2);
-
- if (++row == self->b.height)
- goto out;
- }
-
- if (folded_sign == '-')
- row += hist_browser__show_callchain_node_rb_tree(self, node,
- self->hists->stats.total_period,
- level + 1, row,
- row_offset,
- is_current_entry);
-out:
- return row - first_row;
-}
-
-static int hist_browser__show_callchain(struct hist_browser *self,
- struct rb_root *chain,
- int level, unsigned short row,
- off_t *row_offset,
- bool *is_current_entry)
-{
- struct rb_node *nd;
- int first_row = row;
-
- for (nd = rb_first(chain); nd; nd = rb_next(nd)) {
- struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
-
- row += hist_browser__show_callchain_node(self, node, level,
- row, row_offset,
- is_current_entry);
- if (row == self->b.height)
- break;
- }
-
- return row - first_row;
-}
-
-static int hist_browser__show_entry(struct hist_browser *self,
- struct hist_entry *entry,
- unsigned short row)
-{
- char s[256];
- double percent;
- int printed = 0;
- int color, width = self->b.width;
- char folded_sign = ' ';
- bool current_entry = ui_browser__is_current_entry(&self->b, row);
- off_t row_offset = entry->row_offset;
-
- if (current_entry) {
- self->he_selection = entry;
- self->selection = &entry->ms;
- }
-
- if (symbol_conf.use_callchain) {
- entry->ms.has_children = !RB_EMPTY_ROOT(&entry->sorted_chain);
- folded_sign = hist_entry__folded(entry);
- }
-
- if (row_offset == 0) {
- hist_entry__snprintf(entry, s, sizeof(s), self->hists, NULL, false,
- 0, false, self->hists->stats.total_period);
- percent = (entry->period * 100.0) / self->hists->stats.total_period;
-
- color = HE_COLORSET_SELECTED;
- if (!current_entry) {
- if (percent >= MIN_RED)
- color = HE_COLORSET_TOP;
- else if (percent >= MIN_GREEN)
- color = HE_COLORSET_MEDIUM;
- else
- color = HE_COLORSET_NORMAL;
- }
-
- SLsmg_set_color(color);
- SLsmg_gotorc(self->b.y + row, self->b.x);
- if (symbol_conf.use_callchain) {
- slsmg_printf("%c ", folded_sign);
- width -= 2;
- }
- slsmg_write_nstring(s, width);
- ++row;
- ++printed;
- } else
- --row_offset;
-
- if (folded_sign == '-' && row != self->b.height) {
- printed += hist_browser__show_callchain(self, &entry->sorted_chain,
- 1, row, &row_offset,
- ¤t_entry);
- if (current_entry)
- self->he_selection = entry;
- }
-
- return printed;
-}
-
-static unsigned int hist_browser__refresh(struct ui_browser *self)
-{
- unsigned row = 0;
- struct rb_node *nd;
- struct hist_browser *hb = container_of(self, struct hist_browser, b);
-
- if (self->top == NULL)
- self->top = rb_first(&hb->hists->entries);
-
- for (nd = self->top; nd; nd = rb_next(nd)) {
- struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
-
- if (h->filtered)
- continue;
-
- row += hist_browser__show_entry(hb, h, row);
- if (row == self->height)
- break;
- }
-
- return row;
-}
-
-static void callchain_node__init_have_children_rb_tree(struct callchain_node *self)
-{
- struct rb_node *nd = rb_first(&self->rb_root);
-
- for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
- struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
- struct callchain_list *chain;
- int first = true;
-
- list_for_each_entry(chain, &child->val, list) {
- if (first) {
- first = false;
- chain->ms.has_children = chain->list.next != &child->val ||
- rb_first(&child->rb_root) != NULL;
- } else
- chain->ms.has_children = chain->list.next == &child->val &&
- rb_first(&child->rb_root) != NULL;
- }
-
- callchain_node__init_have_children_rb_tree(child);
- }
-}
-
-static void callchain_node__init_have_children(struct callchain_node *self)
-{
- struct callchain_list *chain;
-
- list_for_each_entry(chain, &self->val, list)
- chain->ms.has_children = rb_first(&self->rb_root) != NULL;
-
- callchain_node__init_have_children_rb_tree(self);
-}
-
-static void callchain__init_have_children(struct rb_root *self)
-{
- struct rb_node *nd;
-
- for (nd = rb_first(self); nd; nd = rb_next(nd)) {
- struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
- callchain_node__init_have_children(node);
- }
-}
-
-static void hist_entry__init_have_children(struct hist_entry *self)
-{
- if (!self->init_have_children) {
- callchain__init_have_children(&self->sorted_chain);
- self->init_have_children = true;
- }
-}
-
-static struct rb_node *hists__filter_entries(struct rb_node *nd)
-{
- while (nd != NULL) {
- struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
- if (!h->filtered)
- return nd;
-
- nd = rb_next(nd);
- }
-
- return NULL;
-}
-
-static struct rb_node *hists__filter_prev_entries(struct rb_node *nd)
-{
- while (nd != NULL) {
- struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
- if (!h->filtered)
- return nd;
-
- nd = rb_prev(nd);
- }
-
- return NULL;
-}
-
-static void ui_browser__hists_seek(struct ui_browser *self,
- off_t offset, int whence)
-{
- struct hist_entry *h;
- struct rb_node *nd;
- bool first = true;
-
- switch (whence) {
- case SEEK_SET:
- nd = hists__filter_entries(rb_first(self->entries));
- break;
- case SEEK_CUR:
- nd = self->top;
- goto do_offset;
- case SEEK_END:
- nd = hists__filter_prev_entries(rb_last(self->entries));
- first = false;
- break;
- default:
- return;
- }
-
- /*
- * Moves not relative to the first visible entry invalidates its
- * row_offset:
- */
- h = rb_entry(self->top, struct hist_entry, rb_node);
- h->row_offset = 0;
-
- /*
- * Here we have to check if nd is expanded (+), if it is we can't go
- * the next top level hist_entry, instead we must compute an offset of
- * what _not_ to show and not change the first visible entry.
- *
- * This offset increments when we are going from top to bottom and
- * decreases when we're going from bottom to top.
- *
- * As we don't have backpointers to the top level in the callchains
- * structure, we need to always print the whole hist_entry callchain,
- * skipping the first ones that are before the first visible entry
- * and stop when we printed enough lines to fill the screen.
- */
-do_offset:
- if (offset > 0) {
- do {
- h = rb_entry(nd, struct hist_entry, rb_node);
- if (h->ms.unfolded) {
- u16 remaining = h->nr_rows - h->row_offset;
- if (offset > remaining) {
- offset -= remaining;
- h->row_offset = 0;
- } else {
- h->row_offset += offset;
- offset = 0;
- self->top = nd;
- break;
- }
- }
- nd = hists__filter_entries(rb_next(nd));
- if (nd == NULL)
- break;
- --offset;
- self->top = nd;
- } while (offset != 0);
- } else if (offset < 0) {
- while (1) {
- h = rb_entry(nd, struct hist_entry, rb_node);
- if (h->ms.unfolded) {
- if (first) {
- if (-offset > h->row_offset) {
- offset += h->row_offset;
- h->row_offset = 0;
- } else {
- h->row_offset += offset;
- offset = 0;
- self->top = nd;
- break;
- }
- } else {
- if (-offset > h->nr_rows) {
- offset += h->nr_rows;
- h->row_offset = 0;
- } else {
- h->row_offset = h->nr_rows + offset;
- offset = 0;
- self->top = nd;
- break;
- }
- }
- }
-
- nd = hists__filter_prev_entries(rb_prev(nd));
- if (nd == NULL)
- break;
- ++offset;
- self->top = nd;
- if (offset == 0) {
- /*
- * Last unfiltered hist_entry, check if it is
- * unfolded, if it is then we should have
- * row_offset at its last entry.
- */
- h = rb_entry(nd, struct hist_entry, rb_node);
- if (h->ms.unfolded)
- h->row_offset = h->nr_rows;
- break;
- }
- first = false;
- }
- } else {
- self->top = nd;
- h = rb_entry(nd, struct hist_entry, rb_node);
- h->row_offset = 0;
- }
-}
-
-static int callchain_node__count_rows_rb_tree(struct callchain_node *self)
-{
- int n = 0;
- struct rb_node *nd;
-
- for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
- struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
- struct callchain_list *chain;
- char folded_sign = ' '; /* No children */
-
- list_for_each_entry(chain, &child->val, list) {
- ++n;
- /* We need this because we may not have children */
- folded_sign = callchain_list__folded(chain);
- if (folded_sign == '+')
- break;
- }
-
- if (folded_sign == '-') /* Have children and they're unfolded */
- n += callchain_node__count_rows_rb_tree(child);
- }
-
- return n;
-}
-
-static int callchain_node__count_rows(struct callchain_node *node)
-{
- struct callchain_list *chain;
- bool unfolded = false;
- int n = 0;
-
- list_for_each_entry(chain, &node->val, list) {
- ++n;
- unfolded = chain->ms.unfolded;
- }
-
- if (unfolded)
- n += callchain_node__count_rows_rb_tree(node);
-
- return n;
-}
-
-static int callchain__count_rows(struct rb_root *chain)
-{
- struct rb_node *nd;
- int n = 0;
-
- for (nd = rb_first(chain); nd; nd = rb_next(nd)) {
- struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
- n += callchain_node__count_rows(node);
- }
-
- return n;
-}
-
-static bool hist_browser__toggle_fold(struct hist_browser *self)
-{
- if (map_symbol__toggle_fold(self->selection)) {
- struct hist_entry *he = self->he_selection;
-
- hist_entry__init_have_children(he);
- self->hists->nr_entries -= he->nr_rows;
-
- if (he->ms.unfolded)
- he->nr_rows = callchain__count_rows(&he->sorted_chain);
- else
- he->nr_rows = 0;
- self->hists->nr_entries += he->nr_rows;
- self->b.nr_entries = self->hists->nr_entries;
-
- return true;
- }
-
- /* If it doesn't have children, no toggling performed */
- return false;
-}
-
-static int hist_browser__run(struct hist_browser *self, const char *title,
- struct newtExitStruct *es)
-{
- char str[256], unit;
- unsigned long nr_events = self->hists->stats.nr_events[PERF_RECORD_SAMPLE];
-
- self->b.entries = &self->hists->entries;
- self->b.nr_entries = self->hists->nr_entries;
-
- hist_browser__refresh_dimensions(self);
-
- nr_events = convert_unit(nr_events, &unit);
- snprintf(str, sizeof(str), "Events: %lu%c ",
- nr_events, unit);
- newtDrawRootText(0, 0, str);
-
- if (ui_browser__show(&self->b, title) < 0)
- return -1;
-
- newtFormAddHotKey(self->b.form, 'A');
- newtFormAddHotKey(self->b.form, 'a');
- newtFormAddHotKey(self->b.form, '?');
- newtFormAddHotKey(self->b.form, 'h');
- newtFormAddHotKey(self->b.form, 'H');
- newtFormAddHotKey(self->b.form, 'd');
-
- newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT);
- newtFormAddHotKey(self->b.form, NEWT_KEY_RIGHT);
- newtFormAddHotKey(self->b.form, NEWT_KEY_ENTER);
-
- while (1) {
- ui_browser__run(&self->b, es);
-
- if (es->reason != NEWT_EXIT_HOTKEY)
- break;
- switch (es->u.key) {
- case 'd': { /* Debug */
- static int seq;
- struct hist_entry *h = rb_entry(self->b.top,
- struct hist_entry, rb_node);
- ui_helpline__pop();
- ui_helpline__fpush("%d: nr_ent=(%d,%d), height=%d, idx=%d, fve: idx=%d, row_off=%d, nrows=%d",
- seq++, self->b.nr_entries,
- self->hists->nr_entries,
- self->b.height,
- self->b.index,
- self->b.top_idx,
- h->row_offset, h->nr_rows);
- }
- continue;
- case NEWT_KEY_ENTER:
- if (hist_browser__toggle_fold(self))
- break;
- /* fall thru */
- default:
- return 0;
- }
- }
- return 0;
-}
diff --git a/tools/perf/util/pstack.h b/tools/perf/util/pstack.h
index 5ad0702..4cedea5 100644
--- a/tools/perf/util/pstack.h
+++ b/tools/perf/util/pstack.h
@@ -1,6 +1,8 @@
#ifndef _PERF_PSTACK_
#define _PERF_PSTACK_
+#include <stdbool.h>
+
struct pstack;
struct pstack *pstack__new(unsigned short max_nr_entries);
void pstack__delete(struct pstack *self);
diff --git a/tools/perf/util/newt.c b/tools/perf/util/ui/browsers/hists.c
similarity index 85%
copy from tools/perf/util/newt.c
copy to tools/perf/util/ui/browsers/hists.c
index b596926..9d32a41 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/ui/browsers/hists.c
@@ -1,523 +1,273 @@
#define _GNU_SOURCE
#include <stdio.h>
#undef _GNU_SOURCE
-#include "ui/libslang.h"
-#include <signal.h>
+#include "../libslang.h"
#include <stdlib.h>
-#include <elf.h>
+#include <string.h>
#include <newt.h>
-#include <sys/ttydefaults.h>
+#include <linux/rbtree.h>
-#include "cache.h"
-#include "hist.h"
-#include "pstack.h"
-#include "session.h"
-#include "sort.h"
-#include "symbol.h"
-#include "ui/browser.h"
-#include "ui/helpline.h"
-#include "ui/browsers/map.h"
+#include "../../hist.h"
+#include "../../pstack.h"
+#include "../../sort.h"
+#include "../../util.h"
-newtComponent newt_form__new(void);
+#include "../browser.h"
+#include "../helpline.h"
+#include "../util.h"
+#include "map.h"
-char browser__last_msg[1024];
+int ui__help_window(const char *text);
+bool dialog_yesno(const char *msg);
+int popup_menu(int argc, char * const argv[]);
-int browser__show_help(const char *format, va_list ap)
-{
- int ret;
- static int backlog;
+struct hist_browser {
+ struct ui_browser b;
+ struct hists *hists;
+ struct hist_entry *he_selection;
+ struct map_symbol *selection;
+};
- ret = vsnprintf(browser__last_msg + backlog,
- sizeof(browser__last_msg) - backlog, format, ap);
- backlog += ret;
+static void hist_browser__refresh_dimensions(struct hist_browser *self)
+{
+ /* 3 == +/- toggle symbol before actual hist_entry rendering */
+ self->b.width = 3 + (hists__sort_list_width(self->hists) +
+ sizeof("[k]"));
+}
- if (browser__last_msg[backlog - 1] == '\n') {
- ui_helpline__puts(browser__last_msg);
- newtRefresh();
- backlog = 0;
- }
+static void hist_browser__reset(struct hist_browser *self)
+{
+ self->b.nr_entries = self->hists->nr_entries;
+ hist_browser__refresh_dimensions(self);
+ ui_browser__reset_index(&self->b);
+}
- return ret;
+static char tree__folded_sign(bool unfolded)
+{
+ return unfolded ? '-' : '+';
}
-static void newt_form__set_exit_keys(newtComponent self)
+static char map_symbol__folded(const struct map_symbol *self)
{
- newtFormAddHotKey(self, NEWT_KEY_LEFT);
- newtFormAddHotKey(self, NEWT_KEY_ESCAPE);
- newtFormAddHotKey(self, 'Q');
- newtFormAddHotKey(self, 'q');
- newtFormAddHotKey(self, CTRL('c'));
+ return self->has_children ? tree__folded_sign(self->unfolded) : ' ';
}
-newtComponent newt_form__new(void)
+static char hist_entry__folded(const struct hist_entry *self)
{
- newtComponent self = newtForm(NULL, NULL, 0);
- if (self)
- newt_form__set_exit_keys(self);
- return self;
+ return map_symbol__folded(&self->ms);
}
-static int popup_menu(int argc, char * const argv[])
+static char callchain_list__folded(const struct callchain_list *self)
{
- struct newtExitStruct es;
- int i, rc = -1, max_len = 5;
- newtComponent listbox, form = newt_form__new();
+ return map_symbol__folded(&self->ms);
+}
- if (form == NULL)
- return -1;
+static int callchain_node__count_rows_rb_tree(struct callchain_node *self)
+{
+ int n = 0;
+ struct rb_node *nd;
- listbox = newtListbox(0, 0, argc, NEWT_FLAG_RETURNEXIT);
- if (listbox == NULL)
- goto out_destroy_form;
+ for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
+ struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
+ struct callchain_list *chain;
+ char folded_sign = ' '; /* No children */
- newtFormAddComponent(form, listbox);
+ list_for_each_entry(chain, &child->val, list) {
+ ++n;
+ /* We need this because we may not have children */
+ folded_sign = callchain_list__folded(chain);
+ if (folded_sign == '+')
+ break;
+ }
- for (i = 0; i < argc; ++i) {
- int len = strlen(argv[i]);
- if (len > max_len)
- max_len = len;
- if (newtListboxAddEntry(listbox, argv[i], (void *)(long)i))
- goto out_destroy_form;
+ if (folded_sign == '-') /* Have children and they're unfolded */
+ n += callchain_node__count_rows_rb_tree(child);
}
- newtCenteredWindow(max_len, argc, NULL);
- newtFormRun(form, &es);
- rc = newtListboxGetCurrent(listbox) - NULL;
- if (es.reason == NEWT_EXIT_HOTKEY)
- rc = -1;
- newtPopWindow();
-out_destroy_form:
- newtFormDestroy(form);
- return rc;
+ return n;
}
-static int ui__help_window(const char *text)
+static int callchain_node__count_rows(struct callchain_node *node)
{
- struct newtExitStruct es;
- newtComponent tb, form = newt_form__new();
- int rc = -1;
- int max_len = 0, nr_lines = 0;
- const char *t;
-
- if (form == NULL)
- return -1;
+ struct callchain_list *chain;
+ bool unfolded = false;
+ int n = 0;
- t = text;
- while (1) {
- const char *sep = strchr(t, '\n');
- int len;
-
- if (sep == NULL)
- sep = strchr(t, '\0');
- len = sep - t;
- if (max_len < len)
- max_len = len;
- ++nr_lines;
- if (*sep == '\0')
- break;
- t = sep + 1;
+ list_for_each_entry(chain, &node->val, list) {
+ ++n;
+ unfolded = chain->ms.unfolded;
}
- tb = newtTextbox(0, 0, max_len, nr_lines, 0);
- if (tb == NULL)
- goto out_destroy_form;
+ if (unfolded)
+ n += callchain_node__count_rows_rb_tree(node);
- newtTextboxSetText(tb, text);
- newtFormAddComponent(form, tb);
- newtCenteredWindow(max_len, nr_lines, NULL);
- newtFormRun(form, &es);
- newtPopWindow();
- rc = 0;
-out_destroy_form:
- newtFormDestroy(form);
- return rc;
+ return n;
}
-static bool dialog_yesno(const char *msg)
+static int callchain__count_rows(struct rb_root *chain)
{
- /* newtWinChoice should really be accepting const char pointers... */
- char yes[] = "Yes", no[] = "No";
- return newtWinChoice(NULL, yes, no, (char *)msg) == 1;
+ struct rb_node *nd;
+ int n = 0;
+
+ for (nd = rb_first(chain); nd; nd = rb_next(nd)) {
+ struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
+ n += callchain_node__count_rows(node);
+ }
+
+ return n;
}
-static char *callchain_list__sym_name(struct callchain_list *self,
- char *bf, size_t bfsize)
+static bool map_symbol__toggle_fold(struct map_symbol *self)
{
- if (self->ms.sym)
- return self->ms.sym->name;
+ if (!self->has_children)
+ return false;
- snprintf(bf, bfsize, "%#Lx", self->ip);
- return bf;
+ self->unfolded = !self->unfolded;
+ return true;
}
-struct hist_browser {
- struct ui_browser b;
- struct hists *hists;
- struct hist_entry *he_selection;
- struct map_symbol *selection;
-};
+static void callchain_node__init_have_children_rb_tree(struct callchain_node *self)
+{
+ struct rb_node *nd = rb_first(&self->rb_root);
-static void hist_browser__reset(struct hist_browser *self);
-static int hist_browser__run(struct hist_browser *self, const char *title,
- struct newtExitStruct *es);
-static unsigned int hist_browser__refresh(struct ui_browser *self);
-static void ui_browser__hists_seek(struct ui_browser *self,
- off_t offset, int whence);
+ for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
+ struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
+ struct callchain_list *chain;
+ int first = true;
-static struct hist_browser *hist_browser__new(struct hists *hists)
-{
- struct hist_browser *self = zalloc(sizeof(*self));
+ list_for_each_entry(chain, &child->val, list) {
+ if (first) {
+ first = false;
+ chain->ms.has_children = chain->list.next != &child->val ||
+ rb_first(&child->rb_root) != NULL;
+ } else
+ chain->ms.has_children = chain->list.next == &child->val &&
+ rb_first(&child->rb_root) != NULL;
+ }
- if (self) {
- self->hists = hists;
- self->b.refresh = hist_browser__refresh;
- self->b.seek = ui_browser__hists_seek;
+ callchain_node__init_have_children_rb_tree(child);
}
-
- return self;
}
-static void hist_browser__delete(struct hist_browser *self)
+static void callchain_node__init_have_children(struct callchain_node *self)
{
- newtFormDestroy(self->b.form);
- newtPopWindow();
- free(self);
+ struct callchain_list *chain;
+
+ list_for_each_entry(chain, &self->val, list)
+ chain->ms.has_children = rb_first(&self->rb_root) != NULL;
+
+ callchain_node__init_have_children_rb_tree(self);
}
-static struct hist_entry *hist_browser__selected_entry(struct hist_browser *self)
+static void callchain__init_have_children(struct rb_root *self)
{
- return self->he_selection;
+ struct rb_node *nd;
+
+ for (nd = rb_first(self); nd; nd = rb_next(nd)) {
+ struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
+ callchain_node__init_have_children(node);
+ }
}
-static struct thread *hist_browser__selected_thread(struct hist_browser *self)
+static void hist_entry__init_have_children(struct hist_entry *self)
{
- return self->he_selection->thread;
+ if (!self->init_have_children) {
+ callchain__init_have_children(&self->sorted_chain);
+ self->init_have_children = true;
+ }
}
-static int hist_browser__title(char *bf, size_t size, const char *ev_name,
- const struct dso *dso, const struct thread *thread)
+static bool hist_browser__toggle_fold(struct hist_browser *self)
{
- int printed = 0;
+ if (map_symbol__toggle_fold(self->selection)) {
+ struct hist_entry *he = self->he_selection;
- if (thread)
- printed += snprintf(bf + printed, size - printed,
- "Thread: %s(%d)",
- (thread->comm_set ? thread->comm : ""),
- thread->pid);
- if (dso)
- printed += snprintf(bf + printed, size - printed,
- "%sDSO: %s", thread ? " " : "",
- dso->short_name);
- return printed ?: snprintf(bf, size, "Event: %s", ev_name);
+ hist_entry__init_have_children(he);
+ self->hists->nr_entries -= he->nr_rows;
+
+ if (he->ms.unfolded)
+ he->nr_rows = callchain__count_rows(&he->sorted_chain);
+ else
+ he->nr_rows = 0;
+ self->hists->nr_entries += he->nr_rows;
+ self->b.nr_entries = self->hists->nr_entries;
+
+ return true;
+ }
+
+ /* If it doesn't have children, no toggling performed */
+ return false;
}
-int hists__browse(struct hists *self, const char *helpline, const char *ev_name)
+static int hist_browser__run(struct hist_browser *self, const char *title,
+ struct newtExitStruct *es)
{
- struct hist_browser *browser = hist_browser__new(self);
- struct pstack *fstack;
- const struct thread *thread_filter = NULL;
- const struct dso *dso_filter = NULL;
- struct newtExitStruct es;
- char msg[160];
- int key = -1;
+ char str[256], unit;
+ unsigned long nr_events = self->hists->stats.nr_events[PERF_RECORD_SAMPLE];
- if (browser == NULL)
- return -1;
+ self->b.entries = &self->hists->entries;
+ self->b.nr_entries = self->hists->nr_entries;
- fstack = pstack__new(2);
- if (fstack == NULL)
- goto out;
+ hist_browser__refresh_dimensions(self);
- ui_helpline__push(helpline);
+ nr_events = convert_unit(nr_events, &unit);
+ snprintf(str, sizeof(str), "Events: %lu%c ",
+ nr_events, unit);
+ newtDrawRootText(0, 0, str);
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
+ if (ui_browser__show(&self->b, title) < 0)
+ return -1;
+
+ newtFormAddHotKey(self->b.form, 'A');
+ newtFormAddHotKey(self->b.form, 'a');
+ newtFormAddHotKey(self->b.form, '?');
+ newtFormAddHotKey(self->b.form, 'h');
+ newtFormAddHotKey(self->b.form, 'H');
+ newtFormAddHotKey(self->b.form, 'd');
+
+ newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT);
+ newtFormAddHotKey(self->b.form, NEWT_KEY_RIGHT);
+ newtFormAddHotKey(self->b.form, NEWT_KEY_ENTER);
while (1) {
- const struct thread *thread;
- const struct dso *dso;
- char *options[16];
- int nr_options = 0, choice = 0, i,
- annotate = -2, zoom_dso = -2, zoom_thread = -2,
- browse_map = -2;
+ ui_browser__run(&self->b, es);
- if (hist_browser__run(browser, msg, &es))
+ if (es->reason != NEWT_EXIT_HOTKEY)
break;
+ switch (es->u.key) {
+ case 'd': { /* Debug */
+ static int seq;
+ struct hist_entry *h = rb_entry(self->b.top,
+ struct hist_entry, rb_node);
+ ui_helpline__pop();
+ ui_helpline__fpush("%d: nr_ent=(%d,%d), height=%d, idx=%d, fve: idx=%d, row_off=%d, nrows=%d",
+ seq++, self->b.nr_entries,
+ self->hists->nr_entries,
+ self->b.height,
+ self->b.index,
+ self->b.top_idx,
+ h->row_offset, h->nr_rows);
+ }
+ continue;
+ case NEWT_KEY_ENTER:
+ if (hist_browser__toggle_fold(self))
+ break;
+ /* fall thru */
+ default:
+ return 0;
+ }
+ }
+ return 0;
+}
- thread = hist_browser__selected_thread(browser);
- dso = browser->selection->map ? browser->selection->map->dso : NULL;
-
- if (es.reason == NEWT_EXIT_HOTKEY) {
- key = es.u.key;
-
- switch (key) {
- case NEWT_KEY_F1:
- goto do_help;
- case NEWT_KEY_TAB:
- case NEWT_KEY_UNTAB:
- /*
- * Exit the browser, let hists__browser_tree
- * go to the next or previous
- */
- goto out_free_stack;
- default:;
- }
-
- key = toupper(key);
- switch (key) {
- case 'A':
- if (browser->selection->map == NULL &&
- browser->selection->map->dso->annotate_warned)
- continue;
- goto do_annotate;
- case 'D':
- goto zoom_dso;
- case 'T':
- goto zoom_thread;
- case 'H':
- case '?':
-do_help:
- ui__help_window("-> Zoom into DSO/Threads & Annotate current symbol\n"
- "<- Zoom out\n"
- "a Annotate current symbol\n"
- "h/?/F1 Show this window\n"
- "d Zoom into current DSO\n"
- "t Zoom into current Thread\n"
- "q/CTRL+C Exit browser");
- continue;
- default:;
- }
- if (is_exit_key(key)) {
- if (key == NEWT_KEY_ESCAPE) {
- if (dialog_yesno("Do you really want to exit?"))
- break;
- else
- continue;
- } else
- break;
- }
-
- if (es.u.key == NEWT_KEY_LEFT) {
- const void *top;
-
- if (pstack__empty(fstack))
- continue;
- top = pstack__pop(fstack);
- if (top == &dso_filter)
- goto zoom_out_dso;
- if (top == &thread_filter)
- goto zoom_out_thread;
- continue;
- }
- }
-
- if (browser->selection->sym != NULL &&
- !browser->selection->map->dso->annotate_warned &&
- asprintf(&options[nr_options], "Annotate %s",
- browser->selection->sym->name) > 0)
- annotate = nr_options++;
-
- if (thread != NULL &&
- asprintf(&options[nr_options], "Zoom %s %s(%d) thread",
- (thread_filter ? "out of" : "into"),
- (thread->comm_set ? thread->comm : ""),
- thread->pid) > 0)
- zoom_thread = nr_options++;
-
- if (dso != NULL &&
- asprintf(&options[nr_options], "Zoom %s %s DSO",
- (dso_filter ? "out of" : "into"),
- (dso->kernel ? "the Kernel" : dso->short_name)) > 0)
- zoom_dso = nr_options++;
-
- if (browser->selection->map != NULL &&
- asprintf(&options[nr_options], "Browse map details") > 0)
- browse_map = nr_options++;
-
- options[nr_options++] = (char *)"Exit";
-
- choice = popup_menu(nr_options, options);
-
- for (i = 0; i < nr_options - 1; ++i)
- free(options[i]);
-
- if (choice == nr_options - 1)
- break;
-
- if (choice == -1)
- continue;
-
- if (choice == annotate) {
- struct hist_entry *he;
-do_annotate:
- if (browser->selection->map->dso->origin == DSO__ORIG_KERNEL) {
- browser->selection->map->dso->annotate_warned = 1;
- ui_helpline__puts("No vmlinux file found, can't "
- "annotate with just a "
- "kallsyms file");
- continue;
- }
-
- he = hist_browser__selected_entry(browser);
- if (he == NULL)
- continue;
-
- hist_entry__tui_annotate(he);
- } else if (choice == browse_map)
- map__browse(browser->selection->map);
- else if (choice == zoom_dso) {
-zoom_dso:
- if (dso_filter) {
- pstack__remove(fstack, &dso_filter);
-zoom_out_dso:
- ui_helpline__pop();
- dso_filter = NULL;
- } else {
- if (dso == NULL)
- continue;
- ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s DSO\"",
- dso->kernel ? "the Kernel" : dso->short_name);
- dso_filter = dso;
- pstack__push(fstack, &dso_filter);
- }
- hists__filter_by_dso(self, dso_filter);
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
- hist_browser__reset(browser);
- } else if (choice == zoom_thread) {
-zoom_thread:
- if (thread_filter) {
- pstack__remove(fstack, &thread_filter);
-zoom_out_thread:
- ui_helpline__pop();
- thread_filter = NULL;
- } else {
- ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s(%d) thread\"",
- thread->comm_set ? thread->comm : "",
- thread->pid);
- thread_filter = thread;
- pstack__push(fstack, &thread_filter);
- }
- hists__filter_by_thread(self, thread_filter);
- hist_browser__title(msg, sizeof(msg), ev_name,
- dso_filter, thread_filter);
- hist_browser__reset(browser);
- }
- }
-out_free_stack:
- pstack__delete(fstack);
-out:
- hist_browser__delete(browser);
- return key;
-}
-
-int hists__tui_browse_tree(struct rb_root *self, const char *help)
-{
- struct rb_node *first = rb_first(self), *nd = first, *next;
- int key = 0;
-
- while (nd) {
- struct hists *hists = rb_entry(nd, struct hists, rb_node);
- const char *ev_name = __event_name(hists->type, hists->config);
-
- key = hists__browse(hists, help, ev_name);
-
- if (is_exit_key(key))
- break;
-
- switch (key) {
- case NEWT_KEY_TAB:
- next = rb_next(nd);
- if (next)
- nd = next;
- break;
- case NEWT_KEY_UNTAB:
- if (nd == first)
- continue;
- nd = rb_prev(nd);
- default:
- break;
- }
- }
-
- return key;
-}
-
-static void newt_suspend(void *d __used)
-{
- newtSuspend();
- raise(SIGTSTP);
- newtResume();
-}
-
-void setup_browser(void)
-{
- if (!isatty(1) || !use_browser || dump_trace) {
- use_browser = 0;
- setup_pager();
- return;
- }
-
- use_browser = 1;
- newtInit();
- newtCls();
- newtSetSuspendCallback(newt_suspend, NULL);
- ui_helpline__puts(" ");
- ui_browser__init();
-}
-
-void exit_browser(bool wait_for_ok)
-{
- if (use_browser > 0) {
- if (wait_for_ok) {
- char title[] = "Fatal Error", ok[] = "Ok";
- newtWinMessage(title, ok, browser__last_msg);
- }
- newtFinished();
- }
-}
-
-static void hist_browser__refresh_dimensions(struct hist_browser *self)
-{
- /* 3 == +/- toggle symbol before actual hist_entry rendering */
- self->b.width = 3 + (hists__sort_list_width(self->hists) +
- sizeof("[k]"));
-}
-
-static void hist_browser__reset(struct hist_browser *self)
-{
- self->b.nr_entries = self->hists->nr_entries;
- hist_browser__refresh_dimensions(self);
- ui_browser__reset_index(&self->b);
-}
-
-static char tree__folded_sign(bool unfolded)
-{
- return unfolded ? '-' : '+';
-}
-
-static char map_symbol__folded(const struct map_symbol *self)
-{
- return self->has_children ? tree__folded_sign(self->unfolded) : ' ';
-}
-
-static char hist_entry__folded(const struct hist_entry *self)
-{
- return map_symbol__folded(&self->ms);
-}
-
-static char callchain_list__folded(const struct callchain_list *self)
-{
- return map_symbol__folded(&self->ms);
-}
-
-static bool map_symbol__toggle_fold(struct map_symbol *self)
+static char *callchain_list__sym_name(struct callchain_list *self,
+ char *bf, size_t bfsize)
{
- if (!self->has_children)
- return false;
+ if (self->ms.sym)
+ return self->ms.sym->name;
- self->unfolded = !self->unfolded;
- return true;
+ snprintf(bf, bfsize, "%#Lx", self->ip);
+ return bf;
}
#define LEVEL_OFFSET_STEP 3
@@ -781,58 +531,7 @@ static unsigned int hist_browser__refresh(struct ui_browser *self)
return row;
}
-static void callchain_node__init_have_children_rb_tree(struct callchain_node *self)
-{
- struct rb_node *nd = rb_first(&self->rb_root);
-
- for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
- struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
- struct callchain_list *chain;
- int first = true;
-
- list_for_each_entry(chain, &child->val, list) {
- if (first) {
- first = false;
- chain->ms.has_children = chain->list.next != &child->val ||
- rb_first(&child->rb_root) != NULL;
- } else
- chain->ms.has_children = chain->list.next == &child->val &&
- rb_first(&child->rb_root) != NULL;
- }
-
- callchain_node__init_have_children_rb_tree(child);
- }
-}
-
-static void callchain_node__init_have_children(struct callchain_node *self)
-{
- struct callchain_list *chain;
-
- list_for_each_entry(chain, &self->val, list)
- chain->ms.has_children = rb_first(&self->rb_root) != NULL;
-
- callchain_node__init_have_children_rb_tree(self);
-}
-
-static void callchain__init_have_children(struct rb_root *self)
-{
- struct rb_node *nd;
-
- for (nd = rb_first(self); nd; nd = rb_next(nd)) {
- struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
- callchain_node__init_have_children(node);
- }
-}
-
-static void hist_entry__init_have_children(struct hist_entry *self)
-{
- if (!self->init_have_children) {
- callchain__init_have_children(&self->sorted_chain);
- self->init_have_children = true;
- }
-}
-
-static struct rb_node *hists__filter_entries(struct rb_node *nd)
+static struct rb_node *hists__filter_entries(struct rb_node *nd)
{
while (nd != NULL) {
struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
@@ -974,140 +673,278 @@ do_offset:
}
}
-static int callchain_node__count_rows_rb_tree(struct callchain_node *self)
+static struct hist_browser *hist_browser__new(struct hists *hists)
{
- int n = 0;
- struct rb_node *nd;
-
- for (nd = rb_first(&self->rb_root); nd; nd = rb_next(nd)) {
- struct callchain_node *child = rb_entry(nd, struct callchain_node, rb_node);
- struct callchain_list *chain;
- char folded_sign = ' '; /* No children */
-
- list_for_each_entry(chain, &child->val, list) {
- ++n;
- /* We need this because we may not have children */
- folded_sign = callchain_list__folded(chain);
- if (folded_sign == '+')
- break;
- }
+ struct hist_browser *self = zalloc(sizeof(*self));
- if (folded_sign == '-') /* Have children and they're unfolded */
- n += callchain_node__count_rows_rb_tree(child);
+ if (self) {
+ self->hists = hists;
+ self->b.refresh = hist_browser__refresh;
+ self->b.seek = ui_browser__hists_seek;
}
- return n;
+ return self;
}
-static int callchain_node__count_rows(struct callchain_node *node)
+static void hist_browser__delete(struct hist_browser *self)
{
- struct callchain_list *chain;
- bool unfolded = false;
- int n = 0;
-
- list_for_each_entry(chain, &node->val, list) {
- ++n;
- unfolded = chain->ms.unfolded;
- }
-
- if (unfolded)
- n += callchain_node__count_rows_rb_tree(node);
+ newtFormDestroy(self->b.form);
+ newtPopWindow();
+ free(self);
+}
- return n;
+static struct hist_entry *hist_browser__selected_entry(struct hist_browser *self)
+{
+ return self->he_selection;
}
-static int callchain__count_rows(struct rb_root *chain)
+static struct thread *hist_browser__selected_thread(struct hist_browser *self)
{
- struct rb_node *nd;
- int n = 0;
+ return self->he_selection->thread;
+}
- for (nd = rb_first(chain); nd; nd = rb_next(nd)) {
- struct callchain_node *node = rb_entry(nd, struct callchain_node, rb_node);
- n += callchain_node__count_rows(node);
- }
+static int hist_browser__title(char *bf, size_t size, const char *ev_name,
+ const struct dso *dso, const struct thread *thread)
+{
+ int printed = 0;
- return n;
+ if (thread)
+ printed += snprintf(bf + printed, size - printed,
+ "Thread: %s(%d)",
+ (thread->comm_set ? thread->comm : ""),
+ thread->pid);
+ if (dso)
+ printed += snprintf(bf + printed, size - printed,
+ "%sDSO: %s", thread ? " " : "",
+ dso->short_name);
+ return printed ?: snprintf(bf, size, "Event: %s", ev_name);
}
-static bool hist_browser__toggle_fold(struct hist_browser *self)
+int hists__browse(struct hists *self, const char *helpline, const char *ev_name)
{
- if (map_symbol__toggle_fold(self->selection)) {
- struct hist_entry *he = self->he_selection;
+ struct hist_browser *browser = hist_browser__new(self);
+ struct pstack *fstack;
+ const struct thread *thread_filter = NULL;
+ const struct dso *dso_filter = NULL;
+ struct newtExitStruct es;
+ char msg[160];
+ int key = -1;
- hist_entry__init_have_children(he);
- self->hists->nr_entries -= he->nr_rows;
+ if (browser == NULL)
+ return -1;
- if (he->ms.unfolded)
- he->nr_rows = callchain__count_rows(&he->sorted_chain);
- else
- he->nr_rows = 0;
- self->hists->nr_entries += he->nr_rows;
- self->b.nr_entries = self->hists->nr_entries;
+ fstack = pstack__new(2);
+ if (fstack == NULL)
+ goto out;
- return true;
- }
+ ui_helpline__push(helpline);
- /* If it doesn't have children, no toggling performed */
- return false;
-}
+ hist_browser__title(msg, sizeof(msg), ev_name,
+ dso_filter, thread_filter);
-static int hist_browser__run(struct hist_browser *self, const char *title,
- struct newtExitStruct *es)
-{
- char str[256], unit;
- unsigned long nr_events = self->hists->stats.nr_events[PERF_RECORD_SAMPLE];
+ while (1) {
+ const struct thread *thread;
+ const struct dso *dso;
+ char *options[16];
+ int nr_options = 0, choice = 0, i,
+ annotate = -2, zoom_dso = -2, zoom_thread = -2,
+ browse_map = -2;
- self->b.entries = &self->hists->entries;
- self->b.nr_entries = self->hists->nr_entries;
+ if (hist_browser__run(browser, msg, &es))
+ break;
- hist_browser__refresh_dimensions(self);
+ thread = hist_browser__selected_thread(browser);
+ dso = browser->selection->map ? browser->selection->map->dso : NULL;
- nr_events = convert_unit(nr_events, &unit);
- snprintf(str, sizeof(str), "Events: %lu%c ",
- nr_events, unit);
- newtDrawRootText(0, 0, str);
+ if (es.reason == NEWT_EXIT_HOTKEY) {
+ key = es.u.key;
- if (ui_browser__show(&self->b, title) < 0)
- return -1;
+ switch (key) {
+ case NEWT_KEY_F1:
+ goto do_help;
+ case NEWT_KEY_TAB:
+ case NEWT_KEY_UNTAB:
+ /*
+ * Exit the browser, let hists__browser_tree
+ * go to the next or previous
+ */
+ goto out_free_stack;
+ default:;
+ }
- newtFormAddHotKey(self->b.form, 'A');
- newtFormAddHotKey(self->b.form, 'a');
- newtFormAddHotKey(self->b.form, '?');
- newtFormAddHotKey(self->b.form, 'h');
- newtFormAddHotKey(self->b.form, 'H');
- newtFormAddHotKey(self->b.form, 'd');
+ key = toupper(key);
+ switch (key) {
+ case 'A':
+ if (browser->selection->map == NULL &&
+ browser->selection->map->dso->annotate_warned)
+ continue;
+ goto do_annotate;
+ case 'D':
+ goto zoom_dso;
+ case 'T':
+ goto zoom_thread;
+ case 'H':
+ case '?':
+do_help:
+ ui__help_window("-> Zoom into DSO/Threads & Annotate current symbol\n"
+ "<- Zoom out\n"
+ "a Annotate current symbol\n"
+ "h/?/F1 Show this window\n"
+ "d Zoom into current DSO\n"
+ "t Zoom into current Thread\n"
+ "q/CTRL+C Exit browser");
+ continue;
+ default:;
+ }
+ if (is_exit_key(key)) {
+ if (key == NEWT_KEY_ESCAPE &&
+ !dialog_yesno("Do you really want to exit?"))
+ continue;
+ break;
+ }
- newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT);
- newtFormAddHotKey(self->b.form, NEWT_KEY_RIGHT);
- newtFormAddHotKey(self->b.form, NEWT_KEY_ENTER);
+ if (es.u.key == NEWT_KEY_LEFT) {
+ const void *top;
- while (1) {
- ui_browser__run(&self->b, es);
+ if (pstack__empty(fstack))
+ continue;
+ top = pstack__pop(fstack);
+ if (top == &dso_filter)
+ goto zoom_out_dso;
+ if (top == &thread_filter)
+ goto zoom_out_thread;
+ continue;
+ }
+ }
- if (es->reason != NEWT_EXIT_HOTKEY)
+ if (browser->selection->sym != NULL &&
+ !browser->selection->map->dso->annotate_warned &&
+ asprintf(&options[nr_options], "Annotate %s",
+ browser->selection->sym->name) > 0)
+ annotate = nr_options++;
+
+ if (thread != NULL &&
+ asprintf(&options[nr_options], "Zoom %s %s(%d) thread",
+ (thread_filter ? "out of" : "into"),
+ (thread->comm_set ? thread->comm : ""),
+ thread->pid) > 0)
+ zoom_thread = nr_options++;
+
+ if (dso != NULL &&
+ asprintf(&options[nr_options], "Zoom %s %s DSO",
+ (dso_filter ? "out of" : "into"),
+ (dso->kernel ? "the Kernel" : dso->short_name)) > 0)
+ zoom_dso = nr_options++;
+
+ if (browser->selection->map != NULL &&
+ asprintf(&options[nr_options], "Browse map details") > 0)
+ browse_map = nr_options++;
+
+ options[nr_options++] = (char *)"Exit";
+
+ choice = popup_menu(nr_options, options);
+
+ for (i = 0; i < nr_options - 1; ++i)
+ free(options[i]);
+
+ if (choice == nr_options - 1)
break;
- switch (es->u.key) {
- case 'd': { /* Debug */
- static int seq;
- struct hist_entry *h = rb_entry(self->b.top,
- struct hist_entry, rb_node);
- ui_helpline__pop();
- ui_helpline__fpush("%d: nr_ent=(%d,%d), height=%d, idx=%d, fve: idx=%d, row_off=%d, nrows=%d",
- seq++, self->b.nr_entries,
- self->hists->nr_entries,
- self->b.height,
- self->b.index,
- self->b.top_idx,
- h->row_offset, h->nr_rows);
- }
+
+ if (choice == -1)
continue;
- case NEWT_KEY_ENTER:
- if (hist_browser__toggle_fold(self))
- break;
- /* fall thru */
+
+ if (choice == annotate) {
+ struct hist_entry *he;
+do_annotate:
+ if (browser->selection->map->dso->origin == DSO__ORIG_KERNEL) {
+ browser->selection->map->dso->annotate_warned = 1;
+ ui_helpline__puts("No vmlinux file found, can't "
+ "annotate with just a "
+ "kallsyms file");
+ continue;
+ }
+
+ he = hist_browser__selected_entry(browser);
+ if (he == NULL)
+ continue;
+
+ hist_entry__tui_annotate(he);
+ } else if (choice == browse_map)
+ map__browse(browser->selection->map);
+ else if (choice == zoom_dso) {
+zoom_dso:
+ if (dso_filter) {
+ pstack__remove(fstack, &dso_filter);
+zoom_out_dso:
+ ui_helpline__pop();
+ dso_filter = NULL;
+ } else {
+ if (dso == NULL)
+ continue;
+ ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s DSO\"",
+ dso->kernel ? "the Kernel" : dso->short_name);
+ dso_filter = dso;
+ pstack__push(fstack, &dso_filter);
+ }
+ hists__filter_by_dso(self, dso_filter);
+ hist_browser__title(msg, sizeof(msg), ev_name,
+ dso_filter, thread_filter);
+ hist_browser__reset(browser);
+ } else if (choice == zoom_thread) {
+zoom_thread:
+ if (thread_filter) {
+ pstack__remove(fstack, &thread_filter);
+zoom_out_thread:
+ ui_helpline__pop();
+ thread_filter = NULL;
+ } else {
+ ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s(%d) thread\"",
+ thread->comm_set ? thread->comm : "",
+ thread->pid);
+ thread_filter = thread;
+ pstack__push(fstack, &thread_filter);
+ }
+ hists__filter_by_thread(self, thread_filter);
+ hist_browser__title(msg, sizeof(msg), ev_name,
+ dso_filter, thread_filter);
+ hist_browser__reset(browser);
+ }
+ }
+out_free_stack:
+ pstack__delete(fstack);
+out:
+ hist_browser__delete(browser);
+ return key;
+}
+
+int hists__tui_browse_tree(struct rb_root *self, const char *help)
+{
+ struct rb_node *first = rb_first(self), *nd = first, *next;
+ int key = 0;
+
+ while (nd) {
+ struct hists *hists = rb_entry(nd, struct hists, rb_node);
+ const char *ev_name = __event_name(hists->type, hists->config);
+
+ key = hists__browse(hists, help, ev_name);
+
+ if (is_exit_key(key))
+ break;
+
+ switch (key) {
+ case NEWT_KEY_TAB:
+ next = rb_next(nd);
+ if (next)
+ nd = next;
+ break;
+ case NEWT_KEY_UNTAB:
+ if (nd == first)
+ continue;
+ nd = rb_prev(nd);
default:
- return 0;
+ break;
}
}
- return 0;
+
+ return key;
}
next prev parent reply other threads:[~2010-08-11 7:42 UTC|newest]
Thread overview: 1149+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-24 8:09 [patch] perf tools: allow top users to switch between weighted and individual counter display Mike Galbraith
2009-07-24 8:58 ` Peter Zijlstra
2009-07-24 10:37 ` Mike Galbraith
2009-08-02 20:00 ` Ingo Molnar
2009-08-03 5:09 ` Mike Galbraith
2009-08-04 8:21 ` Mike Galbraith
2009-08-04 8:24 ` [patch] perf tools: update perf top man page Mike Galbraith
[not found] ` <new-submission>
2009-03-18 9:18 ` [tip:tracing/tasks] tracing: stop command line recording when tracing is disabled Thomas Gleixner
2009-03-18 9:18 ` [tip:tracing/tasks] tracing: replace the crude (unsigned) -1 hackery Thomas Gleixner
2009-03-18 9:18 ` [tip:tracing/tasks] tracing: fix trace_find_cmdline() Thomas Gleixner
2009-03-18 9:18 ` [tip:tracing/tasks] tracing: fix command line to pid reverse map Carsten Emde
2009-03-29 22:24 ` [tip:x86/mm] x86/mm: further cleanups of fault.c's include file section Ingo Molnar
2009-03-30 12:06 ` Ingo Molnar
2009-04-01 10:15 ` [tip:perfcounters/core] perf_counter tools: kerneltop: add real-time data acquisition thread Mike Galbraith
2009-05-04 17:33 ` [tip:perfcounters/core] perf_counter: round-robin per-CPU counters too tip-bot for Ingo Molnar
2009-05-04 17:33 ` [tip:perfcounters/core] perf_counter: initialize the per-cpu context earlier tip-bot for Ingo Molnar
2009-05-04 17:34 ` [tip:perfcounters/core] perf_counter: convert perf_resource_mutex to a spinlock tip-bot for Ingo Molnar
[not found] ` <tip-48dd0fed90e2b1f1ba87401439b85942181c6df3@git.kernel.org>
2009-05-06 14:24 ` [tip:tracing/core] tracing: trace_output.c, fix false positive compiler warning Steven Rostedt
2009-05-06 14:36 ` Ingo Molnar
2009-05-06 14:49 ` Steven Rostedt
2009-05-06 14:51 ` [tip:tracing/core] tracing: small trave_events sample Makefile cleanup tip-bot for Christoph Hellwig
2009-05-07 9:19 ` [tip:x86/cleanups] x86: clean up arch/x86/kernel/tsc_sync.c a bit tip-bot for Ingo Molnar
2009-05-11 9:53 ` [tip:x86/apic] x86: apic: Check rev 3 fadt correctly for physical_apic bit tip-bot for Yinghai Lu
2009-05-11 9:53 ` [tip:x86/cpufeature] x86: clean up and fix setup_clear/force_cpu_cap handling tip-bot for Yinghai Lu
2009-05-11 10:10 ` [tip:perfcounters/core] perf_counter, x86: clean up throttling printk tip-bot for Mike Galbraith
2009-05-12 14:33 ` [tip:core/urgent] lockdep: increase MAX_LOCKDEP_ENTRIES tip-bot for Ingo Molnar
2009-05-12 18:27 ` [tip:core/urgent] lockdep: increase MAX_LOCKDEP_ENTRIES and MAX_LOCKDEP_CHAINS tip-bot for Ingo Molnar
2009-05-13 6:21 ` [tip:perfcounters/core] perf_counter: fix print debug irq disable tip-bot for Peter Zijlstra
2009-05-13 13:52 ` [tip:x86/urgent] xen: use header for EXPORT_SYMBOL_GPL tip-bot for Randy Dunlap
2009-05-15 8:42 ` [tip:perfcounters/core] perf_counter: x86: More accurate counter update tip-bot for Peter Zijlstra
2009-05-15 8:42 ` [tip:perfcounters/core] perf_counter: x86: Fix throttling tip-bot for Ingo Molnar
2009-05-15 8:42 ` [tip:perfcounters/core] perf_counter: x86: Allow unpriviliged use of NMIs tip-bot for Peter Zijlstra
2009-05-15 8:43 ` [tip:perfcounters/core] perf_counter: Fix perf_output_copy() WARN to account for overflow tip-bot for Peter Zijlstra
2009-05-15 8:43 ` [tip:perfcounters/core] perf_counter: x86: Fix up the amd NMI/INT throttle tip-bot for Peter Zijlstra
2009-05-15 8:43 ` [tip:perfcounters/core] perf_counter: Rework the perf counter disable/enable tip-bot for Peter Zijlstra
2009-05-15 11:05 ` Paul Mackerras
2009-05-15 11:23 ` Peter Zijlstra
2009-05-15 8:43 ` [tip:perfcounters/core] perf_counter: x86: Robustify interrupt handling tip-bot for Peter Zijlstra
2009-05-15 8:43 ` [tip:perfcounters/core] perf_counter: x86: Disallow interval of 1 tip-bot for Ingo Molnar
2009-05-15 8:44 ` [tip:perfcounters/core] perf_counter: x86: Protect against infinite loops in intel_pmu_handle_irq() tip-bot for Ingo Molnar
2009-05-15 8:44 ` [tip:perfcounters/core] perf_counter: Remove ACPI quirk tip-bot for Ingo Molnar
2009-05-15 10:12 ` [tip:perfcounters/core] perf stat: handle Ctrl-C tip-bot for Ingo Molnar
2009-05-28 11:09 ` Paul Mackerras
2009-05-28 12:19 ` Peter Zijlstra
2009-05-29 9:06 ` Ingo Molnar
2009-05-18 7:40 ` [tip:perfcounters/core] perf_counter, x86: speed up the scheduling fast-path tip-bot for Ingo Molnar
2009-05-20 18:15 ` [tip:perfcounters/core] perf_counter: Fix context removal deadlock tip-bot for Ingo Molnar
2009-05-22 16:21 ` [tip:perfcounters/core] perf_counter tools: increase limits tip-bot for Ingo Molnar
2009-05-24 7:02 ` [tip:perfcounters/core] perf top: fix segfault tip-bot for Mike Galbraith
2009-05-25 3:39 ` [tip:perfcounters/core] perf_counter: Increase mmap limit tip-bot for Ingo Molnar
2009-05-25 8:03 ` [tip:perfcounters/core] perf_counter tools: increase limits, fix tip-bot for Ingo Molnar
2009-05-25 11:03 ` [tip:perfcounters/core] perf top: Reduce display overhead tip-bot for Mike Galbraith
2009-05-25 11:06 ` [tip:perfcounters/core] perf_counter: Move child perfcounter init to after scheduler init tip-bot for Ingo Molnar
2009-05-25 12:45 ` [tip:perfcounters/core] perf stat: flip around ':k' and ':u' flags tip-bot for Ingo Molnar
2009-05-26 7:57 ` [tip:perfcounters/core] perf_counter, x86: Fix APIC NMI programming tip-bot for Ingo Molnar
2009-05-26 7:57 ` [tip:perfcounters/core] perf_counter, x86: Make NMI lockups more robust tip-bot for Ingo Molnar
2009-05-26 7:57 ` [tip:perfcounters/core] perf_counter: Initialize ->oncpu properly tip-bot for Ingo Molnar
2009-05-26 10:33 ` [tip:perfcounters/core] perf record: Straighten out argv types tip-bot for Ingo Molnar
2009-05-26 10:34 ` [tip:perfcounters/core] perf stat: Remove unused variable tip-bot for Ingo Molnar
2009-05-26 10:34 ` [tip:perfcounters/core] perf record: Convert to Git option parsing tip-bot for Ingo Molnar
2009-05-26 10:34 ` [tip:perfcounters/core] perf_counter tools: Librarize event string parsing tip-bot for Ingo Molnar
2009-05-26 11:03 ` [tip:perfcounters/core] perf stat: Convert to Git option parsing tip-bot for Ingo Molnar
2009-05-26 11:36 ` [tip:perfcounters/core] perf top: " tip-bot for Ingo Molnar
2009-05-26 12:12 ` [tip:perfcounters/core] perf_counter: First part of 'perf report' conversion to C + elfutils tip-bot for Arnaldo Carvalho de Melo
2009-05-26 12:12 ` [tip:perfcounters/core] perf_counter tools: remove the standalone perf-report utility tip-bot for Ingo Molnar
2009-05-26 12:13 ` [tip:perfcounters/core] perf_counter: Implement dso__load using libelf tip-bot for Arnaldo Carvalho de Melo
2009-05-26 12:13 ` [tip:perfcounters/core] perf_counter: Use rb_trees in perf report tip-bot for Arnaldo Carvalho de Melo
2009-05-26 12:13 ` [tip:perfcounters/core] perf_counter: Add our private copy of list.h tip-bot for Arnaldo Carvalho de Melo
2009-05-26 12:13 ` [tip:perfcounters/core] perf_counter: Use rb_tree for symhists and threads in report tip-bot for Arnaldo Carvalho de Melo
2009-05-26 12:14 ` [tip:perfcounters/core] perf record: Convert to Git option parsing tip-bot for Ingo Molnar
2009-05-26 12:15 ` [tip:perfcounters/core] perf report: Add help/manpage tip-bot for Ingo Molnar
2009-05-26 13:27 ` [tip:perfcounters/core] perf top: Remove leftover NMI/IRQ bits tip-bot for Mike Galbraith
2009-05-26 13:27 ` [tip:perfcounters/core] perf top: fix typo in -d option tip-bot for Mike Galbraith
2009-05-26 14:24 ` [tip:perfcounters/core] perf report: Fix ELF symbol parsing tip-bot for Peter Zijlstra
2009-05-26 14:24 ` [tip:perfcounters/core] perf report: Fix kernel symbol resolution tip-bot for Arnaldo Carvalho de Melo
2009-05-26 15:21 ` [PATCH 1/1 tip] perf: Don't assume /proc/kallsyms is ordered Arnaldo Carvalho de Melo
2009-05-26 15:39 ` [tip:perfcounters/core] " tip-bot for Arnaldo Carvalho de Melo
2009-05-26 17:56 ` [PATCH 1/1 tip] " Peter Zijlstra
2009-05-26 17:54 ` [tip:perfcounters/core] perf report: add --dump-raw-trace option tip-bot for Ingo Molnar
2009-05-26 18:09 ` [tip:perfcounters/core] perf report: add counter for unknown events tip-bot for Ingo Molnar
2009-05-26 18:09 ` [tip:perfcounters/core] perf report: add more debugging tip-bot for Ingo Molnar
2009-05-26 18:21 ` tip-bot for Ingo Molnar
2009-05-26 19:21 ` [tip:perfcounters/core] perf report: More robust error handling tip-bot for Peter Zijlstra
2009-05-27 7:36 ` [tip:perfcounters/core] perf_counter tools: Rename output.perf to perf.data tip-bot for Ingo Molnar
2009-05-27 9:06 ` [tip:perfcounters/core] perf_counter tools: Add built-in pager support tip-bot for Ingo Molnar
2009-05-27 10:33 ` [tip:perfcounters/core] perf record: Fix the profiling of existing pid or whole box tip-bot for Mike Galbraith
2009-05-27 11:24 ` [tip:perfcounters/core] perf report: Remove <ctype.h> include tip-bot for Ingo Molnar
2009-05-27 13:03 ` [tip:perfcounters/core] perf_counter: tools: /usr/lib/debug%s.debug support tip-bot for Peter Zijlstra
2009-05-27 21:25 ` [tip:perfcounters/core] pref_counter: tools: report: Robustify in case of weird events tip-bot for Ingo Molnar
2009-05-28 9:46 ` [tip:perfcounters/core] perf_counter: Fix perf_counter_init_task() on !CONFIG_PERF_COUNTERS tip-bot for Ingo Molnar
2009-05-28 10:00 ` [tip:perfcounters/core] perf_counter tools: report: Implement header output for --sort variants tip-bot for Peter Zijlstra
2009-05-28 10:00 ` [tip:perfcounters/core] perf_counter tools: report: Add help text for --sort tip-bot for Ingo Molnar
2009-05-28 22:03 ` [tip:perfcounters/core] perf_counter tools: Document '--' option parsing terminator tip-bot for Mike Galbraith
2009-05-29 7:06 ` [tip:perfcounters/core] perf_counter tools: Fix top symbol table dump typo tip-bot for Mike Galbraith
2009-05-29 7:07 ` [tip:perfcounters/core] perf_counter tools: Fix top symbol table max_ip typo tip-bot for Mike Galbraith
2009-05-29 9:00 ` [tip:perfcounters/core] perf_counter tools: Clean up builtin-stat.c's do_perfstat() tip-bot for Ingo Molnar
2009-05-29 9:00 ` [tip:perfcounters/core] perf_counter tools: Split display into reading and printing tip-bot for Ingo Molnar
2009-05-29 9:01 ` [tip:perfcounters/core] perf_counter tools: Also display time-normalized stat results tip-bot for Ingo Molnar
2009-05-29 12:27 ` [tip:perfcounters/core] perf_counter: Fix cpuctx->task_ctx races tip-bot for Ingo Molnar
2009-05-29 12:27 ` [tip:perfcounters/core] perf_counter: Robustify counter-free logic tip-bot for Ingo Molnar
2009-05-29 17:15 ` [tip:sched/core] ftrace: fix typo about map of kernel priority in ftrace.txt file tip-bot for GeunSik Lim
2009-05-29 17:15 ` [tip:sched/core] sched: fix typo in sched-rt-group.txt file tip-bot for GeunSik Lim
2009-05-29 17:16 ` [tip:perfcounters/core] perf_counter: Fix COMM and MMAP events for cpu wide counters tip-bot for Peter Zijlstra
2009-05-30 0:15 ` GeunSik Lim
2009-05-30 0:23 ` Yinghai Lu
2009-05-30 9:40 ` Ingo Molnar
2009-05-30 11:27 ` GeunSik Lim
2009-05-29 17:16 ` [tip:perfcounters/core] perf_counter: Clean up task_ctx vs interrupts tip-bot for Peter Zijlstra
2009-05-29 17:16 ` [tip:perfcounters/core] perf_counter: Ammend cleanup in fork() fail tip-bot for Peter Zijlstra
2009-05-30 11:45 ` [tip:perfcounters/core] perf_counter tools: Print 'CPU utilization factor' in builtin-stat tip-bot for Ingo Molnar
2009-05-30 11:51 ` [tip:perfcounters/core] perf_counter tools: Fix 'make install' tip-bot for Ingo Molnar
2009-05-30 13:00 ` [tip:perfcounters/core] perf_counter tools: Generate per command manpages (and pdf/html, etc.) tip-bot for Ingo Molnar
2009-05-30 13:46 ` Sam Ravnborg
2009-05-30 14:47 ` Ingo Molnar
2009-05-30 15:37 ` Jaswinder Singh Rajput
2009-05-30 16:38 ` Sam Ravnborg
2009-05-30 17:23 ` Ingo Molnar
2009-05-31 20:16 ` [tip:perfcounters/core] perf_counter tools: Fix unknown command help text tip-bot for Ingo Molnar
2009-06-01 8:19 ` [tip:perfcounters/core] perf_counter: Tidy up style details tip-bot for Ingo Molnar
2009-06-01 17:57 ` tip-bot for Ingo Molnar
2009-06-01 18:22 ` Frans Pop
2009-06-01 18:43 ` Ingo Molnar
2009-06-01 18:42 ` [tip:perfcounters/core] perf_counter tools: Guard against record damaging existing files tip-bot for Mike Galbraith
2009-06-02 1:45 ` [tip:perfcounters/core] perf_counter tools: Add string.[ch] tip-bot for Arnaldo Carvalho de Melo
2009-06-02 8:25 ` [tip:perfcounters/core] perf_counter tools: Make .gitignore reflect perf_counter tools files tip-bot for Mike Galbraith
2009-06-02 9:03 ` [tip:perfcounters/core] perf_counter tools: Cleanup Makefile tip-bot for Mike Galbraith
2009-06-02 14:19 ` [tip:perfcounters/core] perf_counter: Use PID namespaces properly tip-bot for Peter Zijlstra
2009-06-02 15:55 ` Oleg Nesterov
2009-06-02 16:28 ` Peter Zijlstra
2009-06-02 16:30 ` Oleg Nesterov
2009-06-02 14:19 ` [tip:perfcounters/core] perf_counter: tools: Expand the COMM,MMAP event synthesizer tip-bot for Peter Zijlstra
2009-06-02 14:19 ` [tip:perfcounters/core] perf_counter: tools: Better handle existing data files tip-bot for Peter Zijlstra
2009-06-02 14:42 ` [tip:perfcounters/core] perf report: Clean up the default output tip-bot for Ingo Molnar
2009-06-02 20:15 ` [tip:perfcounters/core] perf_counter tools: Remove the last nmi bits tip-bot for Peter Zijlstra
2009-06-02 20:15 ` [tip:perfcounters/core] x86: Fix atomic_long_xchg() on 64bit tip-bot for Peter Zijlstra
2009-06-02 20:16 ` [tip:perfcounters/core] perf_counter: Add unique counter id tip-bot for Peter Zijlstra
2009-06-02 20:16 ` [tip:perfcounters/core] perf_counter: Rename various fields tip-bot for Peter Zijlstra
2009-06-02 20:16 ` [tip:perfcounters/core] perf_counter: Remove the last nmi/irq bits tip-bot for Peter Zijlstra
2009-06-02 20:16 ` [tip:perfcounters/core] perf_counter: x86: Emulate longer sample periods tip-bot for Peter Zijlstra
2009-06-02 20:16 ` [tip:perfcounters/core] perf_counter: Change data head from u32 to u64 tip-bot for Peter Zijlstra
2009-06-02 20:17 ` [tip:perfcounters/core] perf_counter: Add ioctl for changing the sample period/frequency tip-bot for Peter Zijlstra
2009-06-02 20:17 ` [tip:perfcounters/core] perf_counter: Rename perf_counter_hw_event => perf_counter_attr tip-bot for Peter Zijlstra
2009-06-02 20:17 ` [tip:perfcounters/core] perf_counter tools: Fix up the ABI shakeup tip-bot for Peter Zijlstra
2009-06-02 20:17 ` [tip:perfcounters/core] perf report: Separate out idle threads tip-bot for Peter Zijlstra
2009-06-02 20:17 ` [tip:perfcounters/core] perf report: Fix column width/alignment of dsos tip-bot for Ingo Molnar
2009-06-02 22:07 ` [tip:perfcounters/core] perf record: Add --append option tip-bot for Ingo Molnar
2009-06-02 22:32 ` [tip:perfcounters/core] perf record: Increase mmap buffering default tip-bot for Ingo Molnar
2009-06-02 22:32 ` [tip:perfcounters/core] perf report: Print more info instead of <unknown> entries tip-bot for Ingo Molnar
2009-06-02 22:42 ` [tip:perfcounters/core] perf_counter tools: Make source code headers more coherent tip-bot for Ingo Molnar
2009-06-02 22:49 ` [tip:perfcounters/core] perf record: Print out the number of events captured tip-bot for Ingo Molnar
2009-06-03 8:46 ` [tip:perfcounters/core] perf_counter tools: Cover PLT symbols too tip-bot for Arnaldo Carvalho de Melo
2009-06-03 8:46 ` [tip:perfcounters/core] perf report: Print -D to stdout tip-bot for Ingo Molnar
2009-06-03 9:48 ` tip-bot for Ingo Molnar
2009-06-03 9:48 ` [tip:perfcounters/core] perf report: Improve sort key recognition tip-bot for Ingo Molnar
2009-06-03 9:48 ` [tip:perfcounters/core] perf report: Handle vDSO symbols properly tip-bot for Ingo Molnar
2009-06-03 13:06 ` [tip:perfcounters/core] perf_counter: Add a comm hook for pure fork()s tip-bot for Peter Zijlstra
2009-06-03 13:06 ` [tip:perfcounters/core] perf record: Use long arg for counter period tip-bot for Peter Zijlstra
2009-06-03 13:06 ` [tip:perfcounters/core] perf report: Fix comm sorting tip-bot for Peter Zijlstra
2009-06-03 13:07 ` [tip:perfcounters/core] perf_counter: Fix race in counter initialization tip-bot for Peter Zijlstra
2009-06-03 18:24 ` [tip:perfcounters/core] perf_counter tools: Clean up old kerneltop references tip-bot for Ingo Molnar
2009-06-03 18:33 ` [tip:perfcounters/core] perf record: Refine capture printout tip-bot for Ingo Molnar
2009-06-03 18:42 ` [tip:perfcounters/core] perf report: Display 100% correctly tip-bot for Ingo Molnar
2009-06-03 18:42 ` [tip:perfcounters/core] perf stat: Print out all arguments tip-bot for Ingo Molnar
2009-06-03 19:15 ` [tip:perfcounters/core] perf report: Add front-entry cache for lookups tip-bot for Ingo Molnar
2009-06-03 19:15 ` [tip:perfcounters/core] perf help: Fix bug when there's no perf-* command around tip-bot for Ingo Molnar
2009-06-03 19:21 ` [tip:perfcounters/core] perf_counter tools: Optimize harder tip-bot for Ingo Molnar
2009-06-03 21:42 ` [tip:perfcounters/core] perf_counter: Fix throttling lock-up tip-bot for Ingo Molnar
2009-06-03 22:35 ` [tip:perfcounters/core] perf report: Clean up event processing tip-bot for Ingo Molnar
2009-06-03 22:35 ` [tip:perfcounters/core] perf report: Split out event processing helpers tip-bot for Ingo Molnar
2009-06-03 22:35 ` [tip:perfcounters/core] perf report: Handle all known event types tip-bot for Ingo Molnar
2009-06-04 7:33 ` [tip:perfcounters/core] perf report: Fix rbtree bug tip-bot for Arnaldo Carvalho de Melo
2009-06-04 8:06 ` [tip:perfcounters/core] perf top: Reduce default filter threshold tip-bot for Ingo Molnar
2009-06-04 12:48 ` [tip:perfcounters/core] perf record/report: Fix PID/COMM handling tip-bot for Ingo Molnar
2009-06-04 13:09 ` [tip:perfcounters/core] perf_counter tools: Build with native optimization tip-bot for Ingo Molnar
2009-06-05 1:03 ` Paul Mackerras
2009-06-05 18:42 ` Ingo Molnar
2009-06-04 13:09 ` [tip:perfcounters/core] perf report: Simplify symbol output tip-bot for Peter Zijlstra
2009-06-04 13:21 ` [tip:perfcounters/core] perf_counter tools: Print out symbol parsing errors only if --verbose tip-bot for Ingo Molnar
2009-06-04 13:27 ` [tip:perfcounters/core] perf report: Print out the total number of events tip-bot for Ingo Molnar
2009-06-04 13:30 ` [tip:perfcounters/core] perf report: Add consistent spacing rules tip-bot for Peter Zijlstra
2009-06-04 14:09 ` tip-bot for Peter Zijlstra
2009-06-04 14:33 ` [tip:perfcounters/core] perf_counter tools: Add color terminal output support tip-bot for Ingo Molnar
2009-06-04 14:51 ` [tip:perfcounters/core] perf_counter tools: Dont output in color on !tty tip-bot for Ingo Molnar
2009-06-04 15:30 ` [tip:perfcounters/core] perf report: Bail out if there are unrecognized options/arguments tip-bot for Ingo Molnar
2009-06-04 15:39 ` [tip:perfcounters/core] perf stat: Update help text tip-bot for Ingo Molnar
2009-06-04 16:00 ` [tip:perfcounters/core] perf_counter: Add fork event tip-bot for Peter Zijlstra
2009-06-04 16:00 ` [tip:perfcounters/core] perf_counter: Remove munmap stuff tip-bot for Peter Zijlstra
2009-06-04 16:01 ` [tip:perfcounters/core] perf_counter tools: Use fork and remove munmap events tip-bot for Peter Zijlstra
2009-06-05 12:45 ` [tip:perfcounters/core] perf record: Split out counter creation into a helper function tip-bot for Ingo Molnar
2009-06-05 12:45 ` [tip:perfcounters/core] perf record, top: Implement --freq tip-bot for Ingo Molnar
2009-06-05 13:21 ` [tip:perfcounters/core] x86: Set context.vdso before installing the mapping tip-bot for Peter Zijlstra
2009-06-05 13:21 ` [tip:perfcounters/core] perf_counter: Generate mmap events for install_special_mapping() tip-bot for Peter Zijlstra
2009-06-05 13:21 ` [tip:perfcounters/core] perf report: Deal with maps tip-bot for Peter Zijlstra
2009-06-05 13:57 ` Arnaldo Carvalho de Melo
2009-06-05 14:06 ` Peter Zijlstra
2009-06-05 15:02 ` Arnaldo Carvalho de Melo
2009-06-05 13:22 ` [tip:perfcounters/core] perf report: Display user/kernel differentiator tip-bot for Ingo Molnar
2009-06-05 13:33 ` [tip:perfcounters/core] perf record/top: Clarify events/samples naming tip-bot for Ingo Molnar
2009-06-05 13:42 ` [tip:perfcounters/core] perf_counter tools: " tip-bot for Ingo Molnar
2009-06-05 16:01 ` [tip:perfcounters/core] perf_counter tools: Remove -march=native tip-bot for Ingo Molnar
2009-06-05 16:57 ` [tip:perfcounters/core] perf_counter: Change PERF_SAMPLE_CONFIG into PERF_SAMPLE_ID tip-bot for Peter Zijlstra
2009-06-05 16:57 ` [tip:perfcounters/core] perf_counter: Add PERF_SAMPLE_PERIOD tip-bot for Peter Zijlstra
2009-06-05 16:57 ` [tip:perfcounters/core] perf_counter: Fix frequency adjustment for < HZ tip-bot for Peter Zijlstra
2009-06-05 17:12 ` [tip:perfcounters/core] perf_counter tools: Sample and display frequency adjustment changes tip-bot for Ingo Molnar
2009-06-05 18:46 ` [tip:perfcounters/core] perf record: Set frequency correctly tip-bot for Ingo Molnar
2009-06-06 9:46 ` [tip:perfcounters/core] perf_counter: Separate out attr->type from attr->config tip-bot for Ingo Molnar
2009-06-06 11:16 ` [tip:perfcounters/core] perf_counter: Implement generalized cache event types tip-bot for Ingo Molnar
2009-06-09 8:15 ` Peter Zijlstra
2009-06-09 12:15 ` Ingo Molnar
2009-06-06 13:22 ` [tip:perfcounters/core] perf_counter tools: Fix cache-event printout tip-bot for Ingo Molnar
2009-06-06 13:27 ` [tip:perfcounters/core] perf_counter tools: Add help for perf list tip-bot for Thomas Gleixner
2009-06-06 13:48 ` [tip:perfcounters/core] perf_counter tools: Uniform help printouts tip-bot for Ingo Molnar
2009-06-06 14:21 ` [tip:perfcounters/core] perf_counter tools: Tidy up manpage details tip-bot for Ingo Molnar
2009-06-06 18:03 ` [tip:perfcounters/core] perf_counter tools: Prepare for 'perf annotate' tip-bot for Ingo Molnar
2009-06-06 18:03 ` [tip:perfcounters/core] perf_counter tools: Add 'perf annotate' feature tip-bot for Ingo Molnar
2009-06-06 18:10 ` Frederic Weisbecker
2009-06-06 18:48 ` [tip:perfcounters/core] perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ tip-bot for Ingo Molnar
2009-06-06 18:48 ` [tip:perfcounters/core] perf_counter tools: Warning fixes on 32-bit tip-bot for Arjan van de Ven
2009-06-06 19:21 ` [tip:perfcounters/core] perf annotate: Automatically pick up vmlinux in the local directory tip-bot for Ingo Molnar
2009-06-06 19:24 ` [tip:perfcounters/core] perf_counter tools: Initialize a stack variable before use tip-bot for Arjan van de Ven
2009-06-06 19:27 ` [tip:perfcounters/core] perf annotate: Fix command line help text tip-bot for Ingo Molnar
2009-06-07 15:12 ` [tip:perfcounters/core] perf stat: Continue even on counter creation error tip-bot for Ingo Molnar
2009-06-07 15:36 ` [tip:perfcounters/core] perf top: Fall back to cpu-clock-tick hrtimer sampling if no cycle counter available tip-bot for Ingo Molnar
2009-06-07 15:42 ` [tip:perfcounters/core] perf record: Fall back to cpu-clock-ticks if no PMU tip-bot for Ingo Molnar
2009-06-07 15:51 ` [tip:perfcounters/core] perf_counter tools: Handle kernels with !CONFIG_PERF_COUNTER tip-bot for Ingo Molnar
2009-06-07 16:00 ` [tip:perfcounters/core] perf report: Print more expressive message in case of file open error tip-bot for Ingo Molnar
2009-06-07 17:21 ` [tip:perfcounters/core] perf stat: Print out instructins/cycle metric tip-bot for Ingo Molnar
2009-06-08 10:31 ` [tip:perfcounters/core] perf_counter, x86: Implement generalized cache event types, add Core2 support tip-bot for Thomas Gleixner
2009-06-08 10:31 ` [tip:perfcounters/core] perf_counter, x86: Implement generalized cache event types, add Atom support tip-bot for Thomas Gleixner
2009-06-08 10:31 ` [tip:perfcounters/core] perf_counter: Clean up x86 boot messages tip-bot for Ingo Molnar
2009-06-08 20:36 ` [tip:perfcounters/core] perf_counter, x86: Implement generalized cache event types, add AMD support tip-bot for Thomas Gleixner
2009-06-09 8:43 ` Peter Zijlstra
2009-06-09 12:01 ` Ingo Molnar
2009-06-08 21:33 ` tip-bot for Thomas Gleixner
2009-06-08 21:33 ` [tip:perfcounters/core] perf_counter tools: Standardize color printing tip-bot for Ingo Molnar
2009-06-10 9:51 ` [tip:core/locking] spinlock: Add missing __raw_spin_lock_flags() stub for UP tip-bot for Benjamin Herrenschmidt
2009-06-10 15:42 ` [tip:perfcounters/core] perf_counter: More aggressive frequency adjustment tip-bot for Peter Zijlstra
2009-06-10 15:42 ` [tip:perfcounters/core] perf_counter tools: Small frequency related fixes tip-bot for Peter Zijlstra
2009-06-10 15:42 ` [tip:perfcounters/core] perf_counter tools: Propagate signals properly tip-bot for Peter Zijlstra
2009-06-11 0:42 ` [tip:perfcounters/core] perf_counter: Annotate exit ctx recursion tip-bot for Peter Zijlstra
2009-06-11 0:43 ` [tip:perfcounters/core] perf_counter tools: Normalize data using per sample period data tip-bot for Peter Zijlstra
2009-06-11 0:43 ` [tip:perfcounters/core] perf_counter: Introduce struct for sample data tip-bot for Peter Zijlstra
2009-06-11 0:43 ` [tip:perfcounters/core] perf_counter: Accurate period data tip-bot for Peter Zijlstra
2009-06-12 12:42 ` [tip:core/urgent] lockdep: Select frame pointers on x86 tip-bot for Peter Zijlstra
2009-06-12 12:42 ` [tip:perfcounters/core] perf_counter: PERF_TYPE_HW_CACHE is a hardware counter too tip-bot for Peter Zijlstra
2009-06-12 12:42 ` [tip:perfcounters/core] perf_counter: Remove PERF_TYPE_RAW special casing tip-bot for Peter Zijlstra
2009-06-12 12:43 ` [tip:perfcounters/core] perf record: Explicity program a default counter tip-bot for Peter Zijlstra
2009-06-12 12:43 ` [tip:perfcounters/core] perf_counter: Add forward/backward attribute ABI compatibility tip-bot for Peter Zijlstra
2009-06-13 14:49 ` [tip:perfcounters/core] perf_counter: Fix stack corruption in perf_read_hw tip-bot for Marti Raudsepp
2009-06-13 14:49 ` [tip:perfcounters/core] perf stat: Reorganize output tip-bot for Ingo Molnar
2009-06-13 14:49 ` [tip:perfcounters/core] perf stat: Add feature to run and measure a command multiple times tip-bot for Ingo Molnar
2009-06-13 14:50 ` [tip:perfcounters/core] perf stat: Enable raw data to be printed tip-bot for Ingo Molnar
2009-06-13 18:36 ` [tip:core/urgent] lockdep: Select frame pointers on x86 tip-bot for Peter Zijlstra
2009-06-14 13:54 ` [tip:perfcounters/core] perf report: Print out raw events in hexa tip-bot for Ingo Molnar
2009-06-14 14:12 ` [tip:perfcounters/core] perf record/report: Add call graph / call chain profiling tip-bot for Ingo Molnar
2009-06-14 18:36 ` tip-bot for Ingo Molnar
2009-06-15 7:14 ` Yong Wang
2009-06-16 2:57 ` Frederic Weisbecker
2009-06-16 8:09 ` Ingo Molnar
2009-06-17 7:37 ` Peter Zijlstra
2009-06-17 12:24 ` Ingo Molnar
2009-06-17 11:41 ` Frederic Weisbecker
2009-06-17 7:29 ` Peter Zijlstra
2009-06-14 20:39 ` [tip:perfcounters/core] perf_counter, x86: Fix call-chain walking tip-bot for Ingo Molnar
2009-06-15 7:24 ` [tip:perfcounters/core] perf record: Fix fast task-exit race tip-bot for Ingo Molnar
2009-06-15 8:03 ` [tip:perfcounters/core] perf_counter, x86: Fix kernel-space call-chains tip-bot for Ingo Molnar
2009-06-15 8:33 ` tip-bot for Ingo Molnar
2009-06-15 8:33 ` [tip:perfcounters/core] perf record: Fix fast task-exit race tip-bot for Ingo Molnar
2009-06-15 14:07 ` [tip:perfcounters/core] x86, mm: Add __get_user_pages_fast() tip-bot for Peter Zijlstra
2009-06-15 14:07 ` [tip:perfcounters/core] perf_counter: x86: Fix call-chain support to use NMI-safe methods tip-bot for Peter Zijlstra
2009-06-15 16:14 ` Mathieu Desnoyers
2009-06-15 17:05 ` Ingo Molnar
2009-06-15 17:42 ` Mathieu Desnoyers
2009-06-15 18:18 ` Ingo Molnar
2009-06-15 17:11 ` Linus Torvalds
2009-06-15 17:18 ` Ingo Molnar
2009-06-15 17:37 ` Linus Torvalds
2009-06-15 18:05 ` Mathieu Desnoyers
2009-06-15 18:23 ` Ingo Molnar
2009-06-15 18:28 ` Ingo Molnar
2009-06-15 18:42 ` Mathieu Desnoyers
2009-06-15 18:47 ` Ingo Molnar
2009-06-15 18:51 ` Linus Torvalds
2009-06-15 19:16 ` Mathieu Desnoyers
2009-06-15 18:38 ` Mathieu Desnoyers
2009-06-15 18:50 ` Ingo Molnar
2009-06-15 18:39 ` H. Peter Anvin
2009-06-15 18:45 ` Ingo Molnar
2009-06-15 18:55 ` H. Peter Anvin
2009-06-15 19:02 ` Avi Kivity
2009-06-16 8:36 ` Ingo Molnar
2009-06-16 8:52 ` Avi Kivity
2009-06-16 10:50 ` Ingo Molnar
2009-06-15 18:30 ` Linus Torvalds
2009-06-15 18:36 ` Ingo Molnar
2009-06-15 18:46 ` Mathieu Desnoyers
2009-06-15 19:04 ` Linus Torvalds
2009-06-15 19:39 ` Mathieu Desnoyers
2009-06-15 19:43 ` Ingo Molnar
2009-06-15 19:51 ` Mathieu Desnoyers
2009-06-15 19:55 ` Ingo Molnar
2009-06-15 20:25 ` Ingo Molnar
2009-06-15 20:04 ` Linus Torvalds
2009-06-15 20:30 ` Ingo Molnar
2009-06-15 20:06 ` Mathieu Desnoyers
2009-06-15 20:10 ` H. Peter Anvin
2009-06-15 20:47 ` Ingo Molnar
2009-06-15 21:02 ` Mathieu Desnoyers
2009-06-15 21:12 ` Ingo Molnar
2009-06-15 21:22 ` Mathieu Desnoyers
2009-06-15 23:22 ` Linus Torvalds
2009-06-19 15:20 ` Ingo Molnar
2009-06-19 15:51 ` Mathieu Desnoyers
2009-06-19 16:16 ` Ingo Molnar
2009-06-16 8:42 ` Ingo Molnar
2009-06-16 15:21 ` H. Peter Anvin
2009-06-15 20:14 ` Jeremy Fitzhardinge
2009-06-15 20:27 ` Linus Torvalds
2009-06-15 20:42 ` H. Peter Anvin
2009-06-15 20:59 ` Ingo Molnar
2009-06-15 21:04 ` H. Peter Anvin
2009-06-15 21:13 ` Ingo Molnar
2009-06-15 22:39 ` Linus Torvalds
2009-06-15 21:06 ` Jeremy Fitzhardinge
2009-06-15 18:08 ` Ingo Molnar
2009-06-15 18:38 ` H. Peter Anvin
2009-06-15 18:48 ` Mathieu Desnoyers
2009-06-15 18:51 ` Peter Zijlstra
2009-06-15 18:59 ` Mathieu Desnoyers
2009-06-15 19:02 ` Peter Zijlstra
2009-06-15 19:11 ` H. Peter Anvin
2009-06-15 19:27 ` Mathieu Desnoyers
2009-06-15 19:32 ` H. Peter Anvin
2009-06-15 21:01 ` Ingo Molnar
2009-06-15 21:12 ` Mathieu Desnoyers
2009-06-15 21:16 ` Ingo Molnar
2009-06-15 21:34 ` Mathieu Desnoyers
2009-06-15 21:38 ` H. Peter Anvin
2009-06-15 21:54 ` Mathieu Desnoyers
2009-06-15 22:21 ` H. Peter Anvin
2009-06-15 22:30 ` Mathieu Desnoyers
2009-06-15 22:36 ` H. Peter Anvin
2009-06-15 22:49 ` Mathieu Desnoyers
2009-06-16 1:28 ` H. Peter Anvin
2009-06-16 3:05 ` Mathieu Desnoyers
2009-06-16 8:33 ` Ingo Molnar
2009-06-16 14:19 ` Mathieu Desnoyers
2009-06-16 15:22 ` H. Peter Anvin
2009-06-16 19:06 ` Mathieu Desnoyers
2009-06-16 20:26 ` H. Peter Anvin
2009-06-16 21:13 ` Mathieu Desnoyers
2009-06-16 22:37 ` H. Peter Anvin
2009-06-16 8:36 ` [tip:x86/urgent] x86: mm: Read cr2 before prefetching the mmap_lock tip-bot for Ingo Molnar
2009-06-16 17:54 ` Linus Torvalds
2009-06-15 19:16 ` [tip:perfcounters/core] perf_counter: x86: Fix call-chain support to use NMI-safe methods Avi Kivity
2009-06-15 19:18 ` H. Peter Anvin
2009-06-15 19:03 ` Ingo Molnar
2009-06-15 19:07 ` Ingo Molnar
2009-06-15 19:10 ` Peter Zijlstra
2009-06-15 19:21 ` Avi Kivity
2009-06-15 20:18 ` Jeremy Fitzhardinge
2009-06-15 19:59 ` Ingo Molnar
2009-06-15 14:07 ` [tip:perfcounters/core] perf report: Add per system call overhead histogram tip-bot for Ingo Molnar
2009-06-15 14:21 ` [tip:perfcounters/core] perf report: Fix 32-bit printf format tip-bot for Ingo Molnar
2009-06-16 19:54 ` [tip:sched/urgent] sched, x86: Fix cpufreq + sched_clock() TSC scaling tip-bot for Peter Zijlstra
2009-06-17 11:51 ` [tip:core/urgent] lockdep: Select frame pointers on x86 tip-bot for Peter Zijlstra
2009-06-17 14:06 ` [tip:sched/urgent] sched, x86: Fix cpufreq + sched_clock() TSC scaling tip-bot for Peter Zijlstra
2009-06-17 17:27 ` [tip:perfcounters/core] perf report: Add --sort <call> --call <$regex> tip-bot for Peter Zijlstra
2009-06-17 17:27 ` [tip:perfcounters/core] perf_counter: x86: Set the period in the intel overflow handler tip-bot for Peter Zijlstra
2009-06-17 17:27 ` [tip:perfcounters/core] perf_counter tools: Replace isprint() with issane() tip-bot for Peter Zijlstra
2009-06-18 6:09 ` [tip:perfcounters/core] perf report: Tidy up the --collapse call-chain feature tip-bot for Ingo Molnar
2009-06-18 6:27 ` [tip:perfcounters/core] perf report: Tidy up the "--parent <regex>" and "--sort parent" call-chain features tip-bot for Ingo Molnar
2009-06-18 7:21 ` [tip:perfcounters/core] perf report: Add validation of call-chain entries tip-bot for Ingo Molnar
2009-06-18 7:45 ` [tip:perfcounters/core] perf_counter tools: Add and use isprint() tip-bot for Peter Zijlstra
2009-06-18 7:48 ` tip-bot for Peter Zijlstra
2009-06-18 12:50 ` [tip:perfcounters/core] fs: Provide empty .set_page_dirty() aop for anon inodes tip-bot for Peter Zijlstra
2009-06-18 12:50 ` [tip:perfcounters/core] perf_counter: Add event overlow handling tip-bot for Peter Zijlstra
2009-06-18 12:50 ` [tip:perfcounters/core] perf_counter tools: Handle lost events tip-bot for Peter Zijlstra
2009-06-18 21:17 ` Corey Ashford
2009-06-18 13:39 ` [tip:perfcounters/core] perf report: Filter to parent set by default tip-bot for Ingo Molnar
2009-06-19 11:51 ` [tip:perfcounters/core] perf_counter: Make callchain samples extensible tip-bot for Peter Zijlstra
2009-06-19 11:52 ` [tip:perfcounters/core] perf_counter: Update userspace callchain sampling uses tip-bot for Peter Zijlstra
2009-06-19 11:52 ` [tip:perfcounters/core] perf_counter tools: Add a data file header tip-bot for Peter Zijlstra
2009-06-19 11:52 ` [tip:perfcounters/core] perf_counter: Simplify and fix task migration counting tip-bot for Peter Zijlstra
2009-06-19 11:59 ` Peter Zijlstra
2009-06-19 12:24 ` Paul Mackerras
2009-06-19 12:39 ` Peter Zijlstra
2009-06-19 12:26 ` Peter Zijlstra
2009-06-19 16:27 ` [tip:perfcounters/core] perf_counter: Close race in perf_lock_task_context() tip-bot for Peter Zijlstra
2009-06-20 11:27 ` [tip:perfcounters/core] perf_counter: Push perf_sample_data through the swcounter code tip-bot for Peter Zijlstra
2009-06-21 8:15 ` [tip:core/urgent] lockdep: Select frame pointers on x86 tip-bot for Peter Zijlstra
2009-06-21 13:09 ` [tip:perfcounters/urgent] perf_counter tools: Fix vmlinux fallback when running on a different kernel tip-bot for Ingo Molnar
2009-06-22 15:00 ` [tip:perfcounters/urgent] perf report: Output more symbol related debug data tip-bot for Peter Zijlstra
2009-06-22 15:03 ` tip-bot for Peter Zijlstra
2009-06-23 10:03 ` [tip:perfcounters/urgent] perf_counter tools: Handle overlapping MMAP events tip-bot for Peter Zijlstra
2009-06-23 10:03 ` [tip:perfcounters/urgent] perf_counter: Optimize perf_swcounter_event() tip-bot for Peter Zijlstra
2009-06-23 10:03 ` [tip:perfcounters/urgent] perf_counter: Push inherit into perf_counter_alloc() tip-bot for Peter Zijlstra
2009-06-23 10:04 ` [tip:perfcounters/urgent] perf_counter: Optimize perf_counter_alloc()'s inherit case tip-bot for Peter Zijlstra
2009-06-23 14:42 ` [tip:perfcounters/urgent] perf report: Fix help text typo tip-bot for Ingo Molnar
2009-06-25 19:42 ` [tip:perfcounters/urgent] perf_counter tools: Rework the file format tip-bot for Peter Zijlstra
2009-06-25 19:42 ` [tip:perfcounters/urgent] perf_counter: Split the mmap control page in two parts tip-bot for Peter Zijlstra
2009-06-25 19:42 ` [tip:perfcounters/urgent] perf_counter: Add scale information to the mmap control page tip-bot for Peter Zijlstra
2009-06-25 19:43 ` [tip:perfcounters/urgent] perf_counter, x86: Add mmap counter read support tip-bot for Peter Zijlstra
2009-06-25 19:43 ` [tip:perfcounters/urgent] perf_counter: Add PERF_EVENT_READ tip-bot for Peter Zijlstra
2009-06-25 19:43 ` [tip:perfcounters/urgent] perf_counter: Implement more accurate per task statistics tip-bot for Peter Zijlstra
2009-06-26 11:10 ` [RFC][PATCH] perf_counter: Complete counter swap Peter Zijlstra
2009-06-26 12:44 ` Paul Mackerras
2009-06-26 15:52 ` [tip:perfcounters/urgent] " tip-bot for Peter Zijlstra
2009-06-25 19:43 ` [tip:perfcounters/urgent] perf_counter: Rework the sample ABI tip-bot for Peter Zijlstra
2009-06-25 19:43 ` [tip:perfcounters/urgent] perf-report: Add modes for inherited stats and no-samples tip-bot for Peter Zijlstra
2009-06-25 19:44 ` [tip:perfcounters/urgent] perf-report: Add bare minimum PERF_EVENT_READ parsing tip-bot for Peter Zijlstra
2009-06-27 4:31 ` [tip:perfcounters/urgent] perf_counter tools: Remove dead code tip-bot for Ingo Molnar
2009-06-27 4:31 ` [tip:perfcounters/urgent] perf stat: Add -n/--null option to run without counters tip-bot for Ingo Molnar
2009-06-27 7:56 ` Jaswinder Singh Rajput
2009-06-27 16:52 ` Ingo Molnar
2009-06-27 4:31 ` [tip:perfcounters/urgent] perf stat: Fix multi-run stats tip-bot for Ingo Molnar
2009-06-27 4:36 ` tip-bot for Ingo Molnar
2009-06-27 8:26 ` Jaswinder Singh Rajput
2009-06-27 16:45 ` Ingo Molnar
2009-06-29 19:54 ` [tip:perfcounters/urgent] perf stat: Use percentages for scaling output tip-bot for Ingo Molnar
2009-07-01 10:55 ` [tip:perfcounters/urgent] perf_counter tools: Add more warnings and fix/annotate them tip-bot for Ingo Molnar
2009-07-03 6:27 ` [tip:perfcounters/urgent] perf_counter tools: Adjust symbols in ET_EXEC files too tip-bot for Arnaldo Carvalho de Melo
2009-07-07 12:07 ` [tip:timers/core] timekeeping: Move ktime_get() functions to timekeeping.c tip-bot for Thomas Gleixner
2009-07-09 12:04 ` [tip:timers/urgent] hrtimer: migration: always subtract base->offset tip-bot for Thomas Gleixner
2009-07-09 12:04 ` [tip:timers/urgent] hrtimer: migration: do not check expiry time on current CPU tip-bot for Thomas Gleixner
2009-07-10 10:40 ` [tip:perfcounters/core] perf_counter: Fix up P6 PMU details tip-bot for Peter Zijlstra
2009-07-10 10:40 ` [tip:perfcounters/core] perf_counter: Clean up global vs counter enable tip-bot for Peter Zijlstra
2009-07-10 10:40 ` [tip:perfcounters/core] perf_counter: Stop open coding unclone_ctx tip-bot for Peter Zijlstra
2009-07-11 9:57 ` [tip:x86/cleanups] x86/cpu: Clean up various files a bit tip-bot for Alan Cox
2009-07-11 11:00 ` Jaswinder Singh Rajput
2009-07-11 11:09 ` Jaswinder Singh Rajput
2009-07-11 14:10 ` Alan Cox
2009-07-13 6:49 ` [tip:perfcounters/core] perf_counter, x86: Extend perf_counter Pentium M support tip-bot for Daniel Qarras
2009-07-18 9:49 ` [tip:sched/urgent] sched: Account for vruntime wrapping tip-bot for Fabio Checconi
2009-07-21 12:36 ` [tip:irq/urgent] genirq: Delegate irq affinity setting to the irq thread tip-bot for Thomas Gleixner
2009-07-22 15:15 ` [tip:timers/core] hrtimer: Remove cb_entry from struct hrtimer tip-bot for Peter Zijlstra
2009-07-24 6:46 ` [tip:x86/urgent] x86: geode: Mark mfgpt irq IRQF_TIMER to prevent resume failure tip-bot for Thomas Gleixner
2009-08-01 11:22 ` [tip:perfcounters/urgent] perf_counter tools: Fix link errors with older toolchains tip-bot for Ingo Molnar
2009-08-02 13:03 ` [tip:core/locking] lockdep: Fix BFS build tip-bot for Ingo Molnar
2009-08-02 13:09 ` [tip:core/debug] debug lockups: Improve lockup detection tip-bot for Ingo Molnar
2009-08-02 17:18 ` Paul E. McKenney
2009-08-02 18:45 ` Andrew Morton
2009-08-02 19:26 ` Ingo Molnar
2009-08-02 19:39 ` Andrew Morton
2009-08-02 20:41 ` Ingo Molnar
2009-08-02 21:08 ` Andrew Morton
2009-08-03 7:59 ` Ingo Molnar
2009-08-03 8:12 ` [tip:core/debug] debug lockups: Improve lockup detection, fix generic arch fallback tip-bot for Ingo Molnar
2009-08-02 20:46 ` [tip:core/debug] debug lockups: Improve lockup detection Ingo Molnar
2009-08-02 13:10 ` [tip:perfcounters/core] perf_counter: Collapse inherit on read() tip-bot for Peter Zijlstra
2009-08-02 13:13 ` [tip:sched/core] sched: Add debug check to task_of() tip-bot for Peter Zijlstra
2009-08-02 18:36 ` [tip:core/rcu] rcu: Fix RCU & CPU hotplug hang tip-bot for Paul E. McKenney
2009-08-02 19:40 ` [tip:core/rcu] rcu: Add diagnostic check for a possible CPU-hotplug race tip-bot for Paul E. McKenney
2009-08-02 20:27 ` Ingo Molnar
2009-08-02 22:13 ` Paul E. McKenney
2009-08-03 5:15 ` Paul E. McKenney
2009-08-03 7:04 ` Ingo Molnar
2009-08-03 12:56 ` Paul E. McKenney
2009-08-06 1:26 ` Paul E. McKenney
2009-08-06 2:51 ` Gautham R Shenoy
2009-08-06 12:29 ` Ingo Molnar
2009-08-06 13:59 ` Paul E. McKenney
2009-08-08 14:57 ` [tip:core/rcu] rcu: Add second " tip-bot for Paul E. McKenney
2009-08-08 15:01 ` Ingo Molnar
2009-08-08 23:21 ` Paul E. McKenney
2009-08-09 10:54 ` tip-bot for Paul E. McKenney
2009-08-09 11:00 ` Ingo Molnar
2009-08-09 11:10 ` Ingo Molnar
2009-08-09 18:30 ` Paul E. McKenney
2009-08-09 19:23 ` Paul E. McKenney
2009-08-04 8:18 ` [tip:core/rcu] rcu: Add " Gautham R Shenoy
2009-08-04 8:20 ` Ingo Molnar
2009-08-04 11:01 ` Ingo Molnar
2009-08-04 15:37 ` Paul E. McKenney
2009-08-04 5:47 ` Gautham R Shenoy
2009-08-03 13:22 ` [tip:sched/core] sched: Add wait, sleep and iowait accounting tracepoints tip-bot for Peter Zijlstra
2009-08-03 13:24 ` Ingo Molnar
2009-08-03 14:24 ` Peter Zijlstra
2009-08-04 11:37 ` [tip:perfcounters/core] perf top: Update man page tip-bot for Mike Galbraith
2009-08-04 11:37 ` [tip:perfcounters/urgent] perf_counter tools: Provide default bfd_demangle() function in case it's not around tip-bot for Ingo Molnar
2009-08-04 16:21 ` tip-bot for Ingo Molnar
2009-08-06 12:57 ` [tip:perfcounters/urgent] perf symbol: Fix symbol parsing in certain cases: use the build-id as a symlink tip-bot for Arnaldo Carvalho de Melo
2009-08-06 18:27 ` tip-bot for Arnaldo Carvalho de Melo
2009-08-11 11:33 ` [tip:perfcounters/urgent] perf_counter, x86: Fix lapic printk message tip-bot for Ingo Molnar
2009-08-11 11:34 ` [tip:perfcounters/urgent] perf_counter, x86: Fix generic cache events on P6-mobile CPUs tip-bot for Ingo Molnar
2009-08-11 11:34 ` [tip:perfcounters/urgent] perf_counter, x86: Fix/improve apic fallback tip-bot for Ingo Molnar
2009-08-11 16:23 ` Johannes Stezenbach
2009-08-11 16:52 ` Ingo Molnar
2009-08-12 12:18 ` tip-bot for Ingo Molnar
2009-08-12 15:51 ` [tip:irq/urgent] genirq: Prevent race between free_irq() and handle_IRQ_event() tip-bot for Thomas Gleixner
2009-08-13 8:39 ` [tip:perfcounters/core] perf_counter: Provide hw_perf_counter_setup_online() APIs tip-bot for Ingo Molnar
2009-08-13 22:05 ` [tip:tracing/core] tracing: Fix syscall tracing on !HAVE_FTRACE_SYSCALLS architectures tip-bot for Ingo Molnar
2009-08-16 8:57 ` [tip:perfcounters/core] perf: Enable more compiler warnings tip-bot for Ingo Molnar
2009-08-16 12:46 ` Frederic Weisbecker
2009-08-16 14:01 ` Ingo Molnar
2009-08-16 14:06 ` Frederic Weisbecker
2009-08-16 15:22 ` Ingo Molnar
2009-08-16 12:53 ` [PATCH] perf tools: Revert the -Wswitch-enum flag Frederic Weisbecker
2009-08-16 14:15 ` [tip:perfcounters/core] perf: Enable more compiler warnings Frederic Weisbecker
2009-08-16 15:18 ` Ingo Molnar
2009-08-16 15:52 ` [PATCH] perf tools: Substract -Wformat-nonliteral from Wformat=2 in extra flags Frederic Weisbecker
2009-08-16 16:00 ` [tip:perfcounters/core] " tip-bot for Frederic Weisbecker
2009-08-16 9:18 ` [tip:perfcounters/core] perf: Build with stack-protector and with -D_FORTIFY_SOURCE=2 tip-bot for Ingo Molnar
2009-08-17 8:46 ` [tip:perfcounters/urgent] perf: Rename perf-examples.txt to examples.txt tip-bot for Carlos R. Mafra
2009-08-18 9:15 ` [tip:perfcounters/core] perf tools: Remove obsolete defines tip-bot for Ingo Molnar
2009-08-18 9:39 ` [tip:perfcounters/urgent] perf_counter: Fix the PARISC build tip-bot for Ingo Molnar
2009-08-18 12:06 ` [tip:perfcounters/urgent] perf annotate: Fix segmentation fault tip-bot for Ingo Molnar
2009-08-21 11:07 ` [tip:tracing/urgent] tracing: Fix too large stack usage in do_one_initcall() tip-bot for Ingo Molnar
2009-08-21 11:14 ` Ingo Molnar
2009-08-21 11:37 ` Peter Zijlstra
2009-08-21 11:58 ` Ingo Molnar
2009-08-21 17:48 ` Andrew Morton
2009-08-21 18:13 ` Linus Torvalds
2009-08-21 18:30 ` Steven Rostedt
2009-08-21 19:02 ` Ingo Molnar
2009-08-21 19:13 ` Linus Torvalds
2009-08-21 19:19 ` Linus Torvalds
2009-08-21 19:17 ` Ingo Molnar
2009-08-21 19:37 ` Steven Rostedt
2009-08-21 16:05 ` Linus Torvalds
2009-08-21 16:22 ` Ingo Molnar
2009-08-21 18:33 ` Arjan van de Ven
2009-08-21 19:18 ` [tip:timers/core] x86: Do not unregister PIT clocksource on PIT oneshot setup/shutdown tip-bot for Thomas Gleixner
2009-08-22 10:35 ` Ingo Molnar
2009-08-22 21:14 ` Martin Schwidefsky
2009-08-27 14:43 ` [tip:sched/clock] init: Move sched_clock_init after late_time_init tip-bot for Thomas Gleixner
2009-08-28 11:51 ` [tip:perfcounters/urgent] perf_counters: Increase paranoia level tip-bot for Ingo Molnar
2009-08-28 18:34 ` [tip:timers/core] clocksource: Resolve cpu hotplug dead lock with TSC unstable tip-bot for Thomas Gleixner
2009-08-31 8:19 ` Martin Schwidefsky
2009-08-31 14:38 ` Ingo Molnar
2009-08-31 15:59 ` Thomas Gleixner
2009-09-03 18:17 ` [boot crash] " Ingo Molnar
2009-09-03 18:21 ` Ingo Molnar
2009-09-03 18:58 ` Ingo Molnar
2009-09-08 21:43 ` john stultz
2009-09-02 6:25 ` [tip:sched/core] sched: Add wait, sleep and iowait accounting tracepoints tip-bot for Peter Zijlstra
2009-09-02 7:01 ` tip-bot for Peter Zijlstra
2009-09-02 7:15 ` tip-bot for Peter Zijlstra
2009-09-02 13:00 ` [tip:perfcounters/core] perf tools: Clean up warnings list in the Makefile tip-bot for Ingo Molnar
2009-09-02 13:00 ` [tip:perfcounters/core] perf tools: Work around strict aliasing related warnings tip-bot for Ingo Molnar
2009-09-02 19:31 ` [tip:perfcounters/core] perf trace: Sample the CPU too tip-bot for Ingo Molnar
2009-09-02 21:44 ` Frederic Weisbecker
2009-09-02 21:54 ` Ingo Molnar
2009-09-03 1:52 ` Frederic Weisbecker
2009-09-02 19:51 ` [tip:perfcounters/core] perf_counter: Introduce new (non-)paranoia level to allow raw tracepoint access tip-bot for Ingo Molnar
2009-09-03 1:11 ` Li Zefan
2009-09-03 6:47 ` Ingo Molnar
2009-09-03 6:46 ` tip-bot for Ingo Molnar
2009-09-03 11:09 ` [tip:perfcounters/core] perf trace: Sample timestamps as well tip-bot for Ingo Molnar
2009-09-03 13:48 ` tip-bot for Ingo Molnar
2009-09-03 14:27 ` [tip:perfcounters/core] perf trace: Fix parsing of perf.data tip-bot for Ingo Molnar
2009-09-03 14:27 ` [tip:perfcounters/core] perf tools: Seek to the end of the header area tip-bot for Ingo Molnar
2009-09-03 14:28 ` [tip:perfcounters/core] perf trace: Print out in nanoseconds tip-bot for Ingo Molnar
2009-09-03 14:28 ` [tip:perfcounters/core] perf trace: Fix read_string() tip-bot for Ingo Molnar
2009-09-03 16:55 ` [tip:perfcounters/core] perf_counter: Fix output-sharing error path tip-bot for Ingo Molnar
2009-09-04 10:25 ` [tip:sched/balancing] sched: Clean up topology.h tip-bot for Ingo Molnar
2009-09-04 10:25 ` [tip:sched/balancing] sched: Turn on SD_BALANCE_NEWIDLE tip-bot for Ingo Molnar
2009-09-04 10:25 ` [tip:sched/balancing] sched: Turn on SD_WAKE_IDLE for 'close' domains tip-bot for Ingo Molnar
2009-09-04 15:42 ` [tip:perfcounters/core] perf stat: Change noise calculation to use stddev tip-bot for Peter Zijlstra
2009-09-04 15:43 ` [tip:perfcounters/core] perf stat: Remove the limit on repeat tip-bot for Peter Zijlstra
2009-09-04 15:43 ` [tip:perfcounters/core] perf stat: Use stddev_mean in stead of stddev tip-bot for Peter Zijlstra
2009-09-04 15:43 ` [tip:perfcounters/core] perf stat: More advanced variance computation tip-bot for Peter Zijlstra
2009-09-04 18:34 ` [tip:perfcounters/core] perf stat: Clean up statistics calculations a bit more tip-bot for Peter Zijlstra
2009-09-07 20:37 ` [tip:sched/balancing] sched: Remove short cut from select_task_rq_fair() tip-bot for Peter Zijlstra
2009-09-07 20:37 ` [tip:sched/balancing] sched: Deal with low-load in wake_affine() tip-bot for Peter Zijlstra
2009-09-07 20:37 ` [tip:sched/balancing] sched: enable SD_WAKE_IDLE tip-bot for Peter Zijlstra
2009-09-08 11:19 ` [tip:sched/core] sched: Ensure that a child can't gain time over it's parent after fork() tip-bot for Mike Galbraith
2009-09-08 11:49 ` Ingo Molnar
2009-09-08 11:53 ` Jens Axboe
2009-09-08 12:42 ` Mike Galbraith
2009-09-14 20:04 ` [tip:timers/core] clocksource: clocksource_select must be called with mutex locked tip-bot for Thomas Gleixner
2009-09-14 20:04 ` [tip:timers/core] clocksource: Delay clocksource down rating to late boot tip-bot for Thomas Gleixner
2009-09-15 8:22 ` [tip:timers/core] time: Prevent 32 bit overflow with set_normalized_timespec() tip-bot for Thomas Gleixner
2009-09-15 9:30 ` [tip:perfcounters/core] perf: Add 'perf sched' tool tip-bot for Ingo Molnar
2009-09-15 9:30 ` [tip:perfcounters/core] perf sched: Import schedbench.c tip-bot for Ingo Molnar
2009-09-15 9:31 ` [tip:perfcounters/core] perf sched: Implement the scheduling workload replay engine tip-bot for Ingo Molnar
2009-09-15 9:31 ` [tip:perfcounters/core] perf sched: Tighten up the code tip-bot for Ingo Molnar
2009-09-15 9:32 ` [tip:perfcounters/core] perf sched: Clean up latency and replay sub-commands tip-bot for Ingo Molnar
2009-09-15 9:32 ` [tip:perfcounters/core] perf sched: Display time in milliseconds, reorganize output tip-bot for Ingo Molnar
2009-09-15 9:32 ` [tip:perfcounters/core] perf sched: Add runtime stats tip-bot for Ingo Molnar
2009-09-15 9:33 ` [tip:perfcounters/core] perf sched: Output runtime and context switch totals tip-bot for Ingo Molnar
2009-09-15 9:34 ` [tip:perfcounters/core] perf sched: Add 'perf sched latency' and 'perf sched replay' tip-bot for Ingo Molnar
2009-09-15 9:34 ` [tip:perfcounters/core] perf sched: Finish latency => atom rename and misc cleanups tip-bot for Ingo Molnar
2009-09-15 9:34 ` [tip:perfcounters/core] perf sched: Clean up PID sorting logic tip-bot for Ingo Molnar
2009-09-15 9:35 ` [tip:perfcounters/core] perf_counter: Allow mmap if paranoid checks are turned off tip-bot for Ingo Molnar
2009-09-15 9:35 ` [tip:perfcounters/core] perf sched: Add 'perf sched trace', improve documentation tip-bot for Ingo Molnar
2009-09-15 9:35 ` [tip:perfcounters/core] perf_counter, sched: Add sched_stat_runtime tracepoint tip-bot for Ingo Molnar
2009-09-15 9:36 ` [tip:perfcounters/core] perf tools: Implement counter output multiplexing tip-bot for Ingo Molnar
2009-09-15 9:36 ` [tip:perfcounters/core] perf sched: Fix 'perf sched latency' output on 32-bit systems tip-bot for Ingo Molnar
2009-09-15 9:36 ` [tip:perfcounters/core] perf sched: Print PIDs too tip-bot for mingo
2009-09-15 9:36 ` [tip:perfcounters/core] perf sched: Add support for sched:sched_stat_runtime events tip-bot for mingo
2009-09-16 10:19 ` [tip:sched/core] sched: Fix double_rq_lock() compile warning tip-bot for Peter Zijlstra
2009-09-16 10:19 ` [tip:sched/core] sched: Split WAKEUP_OVERLAP tip-bot for Peter Zijlstra
2009-09-16 10:19 ` [tip:sched/core] sched: Complete buddy switches tip-bot for Mike Galbraith
2009-09-16 10:19 ` [tip:sched/core] sched: Add come comments to the sched features tip-bot for Peter Zijlstra
2009-09-16 10:19 ` [tip:sched/core] sched: Move code around tip-bot for Peter Zijlstra
2009-09-16 10:20 ` [tip:sched/core] sched: Move sched_balance_self() into sched_fair.c tip-bot for Peter Zijlstra
2009-09-16 10:20 ` [tip:sched/core] sched: Hook sched_balance_self() into sched_class::select_task_rq() tip-bot for Peter Zijlstra
2009-09-16 10:20 ` [tip:sched/core] sched: Add TASK_WAKING tip-bot for Peter Zijlstra
2009-09-16 10:20 ` [tip:sched/core] sched: Merge select_task_rq_fair() and sched_balance_self() tip-bot for Peter Zijlstra
2009-09-16 10:21 ` [tip:sched/core] sched: Weaken SD_POWERSAVINGS_BALANCE tip-bot for Peter Zijlstra
2009-09-16 10:21 ` [tip:sched/core] sched: for_each_domain() vs RCU tip-bot for Peter Zijlstra
2009-09-16 10:21 ` [tip:sched/core] sched: Fix task affinity for select_task_rq_fair tip-bot for Peter Zijlstra
2009-09-16 10:21 ` [tip:sched/core] sched: Tweak wake_idx tip-bot for Peter Zijlstra
2009-09-16 10:21 ` [tip:sched/core] sched: Fix some domain tunings tip-bot for Peter Zijlstra
2009-09-16 10:22 ` [tip:sched/core] sched: Reduce forkexec_idx tip-bot for Peter Zijlstra
2009-09-16 10:22 ` [tip:sched/core] sched: Provide arch_scale_freq_power tip-bot for Peter Zijlstra
2009-09-16 10:22 ` [tip:sched/core] x86: Move APERF/MPERF into a X86_FEATURE tip-bot for Peter Zijlstra
2009-09-16 10:23 ` [tip:sched/core] x86: Add generic aperf/mperf code tip-bot for Peter Zijlstra
2009-09-16 10:23 ` [tip:sched/core] x86: sched: Provide arch implementations using aperf/mperf tip-bot for Peter Zijlstra
2009-09-16 10:23 ` [tip:sched/core] sched: Feature to disable APERF/MPERF cpu_power tip-bot for Peter Zijlstra
2009-09-16 10:23 ` [tip:sched/core] sched: Rename select_task_rq() argument tip-bot for Peter Zijlstra
2009-09-16 10:24 ` [tip:sched/core] sched: Rename sync arguments tip-bot for Peter Zijlstra
2009-09-16 10:24 ` [tip:sched/core] sched: Add WF_FORK tip-bot for Peter Zijlstra
2009-09-16 10:24 ` [tip:sched/core] sched: Fix sync wakeups again tip-bot for Peter Zijlstra
2009-09-16 10:24 ` [tip:sched/core] sched: Add a few SYNC hint knobs to play with tip-bot for Peter Zijlstra
2009-09-16 10:24 ` [tip:sched/core] sched: Add SD_PREFER_LOCAL tip-bot for Peter Zijlstra
2009-09-16 10:25 ` [tip:sched/core] sched: Implement a gentler fair-sleepers feature tip-bot for Ingo Molnar
2009-09-16 10:25 ` [tip:sched/core] sched: x86: Name old_perf in a unique way tip-bot for Peter Zijlstra
2009-09-16 10:25 ` [tip:perfcounters/core] perf sched: Account for lost events, increase default buffering tip-bot for Ingo Molnar
2009-09-16 10:25 ` [tip:perfcounters/core] perf sched: Sanity check context switch events tip-bot for Ingo Molnar
2009-09-16 10:25 ` [tip:perfcounters/core] perf sched: Make idle thread and comm/pid names more consistent tip-bot for Ingo Molnar
2009-09-16 12:36 ` [tip:x86/platform] x86: Move get/set_wallclock to x86_platform_ops tip-bot for Feng Tang
2009-09-16 14:45 ` [tip:perfcounters/core] perf sched: Add 'perf sched map' scheduling event map printout tip-bot for Ingo Molnar
2009-09-16 15:09 ` [tip:sched/core] sched: Optimize cgroup vs wakeup a bit tip-bot for Peter Zijlstra
2009-09-16 15:09 ` [tip:sched/core] sched: Clean up the load_idx selection in select_task_rq_fair tip-bot for Peter Zijlstra
2009-09-16 15:10 ` [tip:sched/core] sched: Rename flags to wake_flags tip-bot for Peter Zijlstra
2009-09-16 15:10 ` [tip:sched/core] sched: Disable wakeup balancing tip-bot for Peter Zijlstra
2009-09-16 18:50 ` Peter Zijlstra
2009-09-16 19:13 ` [tip:sched/core] sched: Fix TASK_WAKING & loadaverage breakage tip-bot for Ingo Molnar
2009-09-16 19:15 ` tip-bot for Ingo Molnar
2009-09-17 7:48 ` [tip:sched/core] sched: Add new wakeup preemption mode: WAKEUP_RUNNING tip-bot for Peter Zijlstra
2009-09-17 7:49 ` [tip:sched/core] sched: Fix TASK_WAKING & loadaverage breakage tip-bot for Ingo Molnar
2009-09-17 7:54 ` tip-bot for Ingo Molnar
2009-09-17 7:54 ` [tip:sched/core] sched: Add new wakeup preemption mode: WAKEUP_RUNNING, disable FAIR_SLEEPERS tip-bot for Peter Zijlstra
2009-09-17 8:12 ` [tip:sched/core] sched: Add new wakeup preemption mode: WAKEUP_RUNNING tip-bot for Peter Zijlstra
2009-09-17 8:18 ` tip-bot for Peter Zijlstra
2009-09-17 8:54 ` [tip:sched/core] sched: Stop buddies from hogging the system tip-bot for Peter Zijlstra
2009-09-17 8:54 ` [tip:sched/core] sched: Fix SD_POWERSAVING_BALANCE|SD_PREFER_LOCAL vs SD_WAKE_AFFINE tip-bot for Peter Zijlstra
2009-09-17 18:07 ` [tip:perfcounters/core] perf sched: Determine the number of CPUs automatically tip-bot for Ingo Molnar
2009-09-17 19:34 ` Arjan van de Ven
2009-09-17 19:45 ` Ingo Molnar
2009-09-17 20:09 ` Ingo Molnar
2009-09-17 18:07 ` [tip:perfcounters/core] perf_counter: Do not throttle single swcounter events tip-bot for Peter Zijlstra
2009-09-17 18:07 ` [tip:perfcounters/core] perf_counter: Allow for a wakeup watermark tip-bot for Peter Zijlstra
2009-09-17 18:07 ` [tip:perfcounters/core] perf record: Disable profiling before draining the buffer tip-bot for Peter Zijlstra
2009-09-17 20:12 ` [tip:perfcounters/core] perf_counter: Do not throttle single swcounter events tip-bot for Peter Zijlstra
2009-09-17 20:13 ` [tip:perfcounters/core] perf_counter: Allow for a wakeup watermark tip-bot for Peter Zijlstra
2009-09-17 20:13 ` [tip:perfcounters/core] perf record: Disable profiling before draining the buffer tip-bot for Peter Zijlstra
2009-09-17 20:13 ` [tip:perfcounters/core] perf sched: Determine the number of CPUs automatically tip-bot for Ingo Molnar
2009-09-18 19:18 ` [tip:perfcounters/core] perf_counter: Fix up swcounter throttling tip-bot for Peter Zijlstra
2009-09-18 19:19 ` [tip:perfcounters/core] sched_clock: Make it NMI safe tip-bot for Peter Zijlstra
2009-09-19 15:16 ` [tip:sched/urgent] sched: Re-add lost cpu_allowed check to sched_fair.c::select_task_rq_fair() tip-bot for Mike Galbraith
2009-09-21 12:52 ` [tip:perfcounters/rename] perf_counter: Rename list_entry -> group_entry, counter_list -> group_list tip-bot for Ingo Molnar
2009-09-21 12:52 ` [tip:perfcounters/rename] perf_counter: Rename 'event' to event_id/hw_event tip-bot for Ingo Molnar
2009-09-21 12:53 ` [tip:perfcounters/rename] perf: Tidy up after the big rename tip-bot for Ingo Molnar
2009-09-22 13:34 ` [tip:core/printk] ratelimit: Use per ratelimit context locking tip-bot for Ingo Molnar
2009-09-22 13:34 ` [tip:core/printk] ratelimit: Fix/allow use in atomic contexts tip-bot for Ingo Molnar
2009-09-22 14:46 ` Linus Torvalds
2009-09-22 13:34 ` [tip:perf/urgent] perf stat: Fix zero total printouts tip-bot for Ingo Molnar
2009-09-22 13:34 ` [tip:x86/urgent] x86: mce: Clean up thermal throttling state tracking code tip-bot for Ingo Molnar
2009-09-22 13:34 ` [tip:x86/urgent] x86: mce: Fix thermal throttling message storm tip-bot for Ingo Molnar
2009-09-22 14:26 ` [tip:core/printk] printk: Remove ratelimit.h from kernel.h tip-bot for Ingo Molnar
2009-09-25 8:49 ` [tip:perf/urgent] perf_event: Provide vmalloc() based mmap() backing tip-bot for Peter Zijlstra
2009-10-04 7:54 ` [tip:core/futexes] futex: Fix locking imbalance tip-bot for Thomas Gleixner
2009-10-04 15:48 ` [tip:core/urgent] " tip-bot for Thomas Gleixner
2009-10-05 19:11 ` tip-bot for Thomas Gleixner
2009-10-06 13:18 ` [tip:perf/core] perf tools: Default to 1 KHz auto-sampling freq events tip-bot for Ingo Molnar
2009-10-06 13:42 ` tip-bot for Ingo Molnar
2009-10-06 15:03 ` [tip:core/urgent] futex: Nullify robust lists after cleanup tip-bot for Peter Zijlstra
2009-10-06 15:54 ` Anirban Sinha
2009-10-06 15:03 ` [tip:core/urgent] futex: Move exit_pi_state() call to release_mm() tip-bot for Thomas Gleixner
2009-10-12 7:13 ` [tip:perf/core] perf sched: Add -C option to measure on a specific CPU tip-bot for Mike Galbraith
2009-10-13 19:04 ` [tip:core/urgent] futex: Handle spurious wake up tip-bot for Thomas Gleixner
2009-10-15 10:46 ` [tip:perf/core] events: Harmonize event field names and print output names tip-bot for Ingo Molnar
2009-10-16 8:40 ` [tip:perf/urgent] perf tools: Bump version to 0.0.2 tip-bot for Ingo Molnar
2009-10-24 1:04 ` [tip:branch?] sched: Strengthen buddies and mitigate buddy induced latencies tip-bot for Mike Galbraith
2009-11-02 9:30 ` [tip:x86/urgent] x86: Fix printk message typo in mtrr cleanup code tip-bot for Dave Jones
2009-11-02 19:45 ` [tip:sched/urgent] sched: Disable SD_PREFER_LOCAL at node level tip-bot for Mike Galbraith
2009-11-03 7:03 ` tip-bot for Mike Galbraith
2009-11-04 19:33 ` [tip:sched/core] sched: Rate-limit newidle tip-bot for Mike Galbraith
2009-11-12 11:33 ` [tip:sched/urgent] sched: Fix/add missing update_rq_clock() calls tip-bot for Mike Galbraith
2009-11-13 19:49 ` [tip:timers/core] nohz: Type cast printk argument tip-bot for Thomas Gleixner
2009-11-13 19:50 ` [tip:timers/core] nohz: Track last do_timer() cpu tip-bot for Thomas Gleixner
2009-11-17 17:18 ` [tip:perf/urgent] perf annotate: Allocate history size correctly tip-bot for Nick Piggin
2009-11-23 7:15 ` [tip:tracing/core] ring-buffer benchmark: Run producer/consumer threads at nice +19 tip-bot for Ingo Molnar
2009-11-24 14:16 ` Steven Rostedt
2009-11-24 14:20 ` Steven Rostedt
2009-11-24 14:39 ` Ingo Molnar
2009-11-24 15:01 ` Steven Rostedt
2009-11-24 15:22 ` Ingo Molnar
2009-11-24 15:40 ` Steven Rostedt
2009-11-23 11:52 ` [tip:perf/core] perf events: Do not generate function trace entries in perf code tip-bot for Ingo Molnar
2009-11-23 11:53 ` [tip:tracing/core] tracing, function tracer: Clean up strstrip() usage tip-bot for Ingo Molnar
2009-11-24 14:15 ` Steven Rostedt
2009-11-23 11:53 ` [tip:perf/core] perf_events: Optimize the swcounter hotpath tip-bot for Ingo Molnar
2009-11-26 8:15 ` [tip:x86/debug] x86: dumpstack: Clean up the x86_stack_ids[][] initalization and other details tip-bot for Ingo Molnar
2009-11-30 8:23 ` [tip:perf/scripting] perf scripting: Fix build tip-bot for Ingo Molnar
2009-12-06 20:27 ` [tip:sched/urgent] sched: Fix balance vs hotplug race tip-bot for Peter Zijlstra
2009-12-09 9:53 ` [tip:sched/urgent] sched: Remove sysctl.sched_features tip-bot for Peter Zijlstra
2009-12-09 9:53 ` [tip:sched/urgent] sched: Consolidate select_task_rq() callers tip-bot for Peter Zijlstra
2009-12-09 9:53 ` [tip:sched/urgent] sched: Remove rq->clock coupling from set_task_cpu() tip-bot for Peter Zijlstra
2009-12-09 9:54 ` [tip:sched/urgent] sched: Clean up ttwu() rq locking tip-bot for Peter Zijlstra
2009-12-09 9:54 ` [tip:sched/urgent] sched: Sanitize fork() handling tip-bot for Peter Zijlstra
2009-12-09 9:54 ` [tip:sched/urgent] sched: Clean up check_preempt_wakeup() tip-bot for Peter Zijlstra
2009-12-09 9:55 ` [tip:sched/urgent] sched: Discard some old bits tip-bot for Peter Zijlstra
2009-12-09 9:55 ` [tip:sched/urgent] sched: Remove unnecessary RCU exclusion tip-bot for Peter Zijlstra
2009-12-10 8:43 ` [tip:sched/urgent] sched: Fix build warning in get_update_sysctl_factor() tip-bot for Mike Galbraith
2009-12-10 19:36 ` [tip:sched/urgent] sched: Remove forced2_migrations stats tip-bot for Ingo Molnar
2009-12-15 9:27 ` [tip:perf/diff] perf diff: Improve the help text tip-bot for Ingo Molnar
2009-12-15 14:30 ` tip-bot for Ingo Molnar
2009-12-28 10:07 ` [tip:perf/core] perf events: Remove arg from perf sched hooks tip-bot for Peter Zijlstra
2010-01-21 13:52 ` [tip:sched/core] sched: Move load balance code into sched_fair.c tip-bot for Peter Zijlstra
2010-01-21 13:52 ` [tip:sched/core] sched: Remove the sched_class load_balance methods tip-bot for Peter Zijlstra
2010-01-21 13:52 ` [tip:sched/core] sched: Remove rq_iterator usage from load_balance_fair tip-bot for Peter Zijlstra
2010-01-21 13:52 ` [tip:sched/core] sched: Remove rq_iterator from move_one_task tip-bot for Peter Zijlstra
2010-01-21 13:53 ` [tip:sched/core] sched: Remove from fwd decls tip-bot for Peter Zijlstra
2010-01-21 13:53 ` [tip:sched/core] sched: Add a lock break for PREEMPT=y tip-bot for Peter Zijlstra
2010-01-21 13:53 ` [tip:sched/core] sched: Unify load_balance{,_newidle}() tip-bot for Peter Zijlstra
2010-01-21 13:53 ` [tip:sched/core] sched: Remove load_balance_newidle() tip-bot for Peter Zijlstra
2010-01-21 13:54 ` [tip:sched/core] sched: Assume *balance is valid tip-bot for Peter Zijlstra
2010-01-21 13:55 ` [tip:perf/urgent] perf: Change the is_software_event() definition tip-bot for Peter Zijlstra
2010-01-27 13:16 ` [tip:perf/core] perf: Reimplement frequency driven sampling tip-bot for Peter Zijlstra
2010-01-29 9:29 ` [tip:perf/core] perf_event: x86: Optimize x86_pmu_disable() tip-bot for Peter Zijlstra
2010-01-29 9:29 ` [tip:perf/core] perf, x86: Clean up event constraints code a bit tip-bot for Ingo Molnar
2010-01-29 9:29 ` [tip:perf/core] perf_event: x86: Deduplicate the disable code tip-bot for Peter Zijlstra
2010-01-31 8:30 ` [tip:perf/core] Revert "perf record: Intercept all events" tip-bot for Hitoshi Mitake
2010-02-04 9:52 ` [tip:x86/debug] x86_64: Print modules like i386 does tip-bot for Alexey Dobriyan
2010-02-04 9:56 ` [tip:perf/core] perf_events: Optimize perf_event_task_tick() tip-bot for Peter Zijlstra
2010-02-04 9:56 ` [tip:perf/core] perf_events, x86: Implement intel core solo/duo support tip-bot for Peter Zijlstra
2010-02-04 9:57 ` [tip:perf/core] bitops: Ensure the compile time HWEIGHT is only used for such tip-bot for Peter Zijlstra
2010-02-04 10:27 ` [PATCH] bitops: Optimize hweight() by making use of compile-time evaluation Peter Zijlstra
2010-02-26 10:24 ` [tip:perf/core] perf_events: Report the MMAP pgoff value in bytes tip-bot for Peter Zijlstra
2010-02-26 10:25 ` [tip:perf/core] perf_events, x86: Remove superflous MSR writes tip-bot for Peter Zijlstra
2010-02-26 14:54 ` [tip:perf/core] perf_events, x86: Split PMU definitions into separate files tip-bot for Peter Zijlstra
2010-03-02 14:30 ` [tip:perf/nmi] nmi_watchdog: Tell the world we're active tip-bot for Peter Zijlstra
2010-03-02 14:30 ` [tip:perf/core] perf, x86: Restrict the ANY flag tip-bot for Peter Zijlstra
2010-03-02 14:31 ` [tip:perf/core] perf_events, x86: Fixup fixed counter constraints tip-bot for Peter Zijlstra
2010-03-02 16:26 ` Stephane Eranian
2010-03-02 17:54 ` Peter Zijlstra
2010-03-03 6:16 ` Stephane Eranian
2010-03-09 8:21 ` [tip:perf/urgent] MAINTAINERS: Add Arnaldo as tools/perf/ co-maintainer tip-bot for Ingo Molnar
2010-03-10 13:10 ` [tip:perf/urgent] perf: Optimize perf_disable tip-bot for Peter Zijlstra
2010-03-10 13:10 ` [tip:perf/urgent] perf, x86, Do not user perf_disable from NMI context tip-bot for Peter Zijlstra
2010-03-10 13:12 ` [tip:perf/urgent] perf, x86: Fix x86_pmu_start tip-bot for Peter Zijlstra
2010-03-10 13:12 ` [tip:perf/urgent] perf, x86: Avoid double disable on throttle vs ioctl(PERF_IOC_DISABLE) tip-bot for Peter Zijlstra
2010-03-10 13:12 ` [tip:perf/urgent] perf, x86: Properly account n_added tip-bot for Peter Zijlstra
2010-03-10 13:12 ` [tip:perf/urgent] perf, x86: Fix double disable calls tip-bot for Peter Zijlstra
2010-03-10 13:13 ` [tip:perf/urgent] perf, x86: Fix double enable calls tip-bot for Peter Zijlstra
2010-03-10 13:13 ` [tip:perf/urgent] perf: Provide better condition for event rotation tip-bot for Peter Zijlstra
2010-03-10 13:22 ` [tip:perf/pebs] perf, x86: Avoid double disable on throttle vs ioctl(PERF_IOC_DISABLE) tip-bot for Peter Zijlstra
2010-03-10 13:22 ` [tip:perf/pebs] perf, x86: Fix pebs drains tip-bot for Peter Zijlstra
2010-03-10 13:22 ` [tip:perf/pebs] perf, x86: Fix PEBS enable/disable vs cpuc->enabled tip-bot for Peter Zijlstra
2010-03-10 13:22 ` [tip:perf/pebs] perf, x86: Fix LBR " tip-bot for Peter Zijlstra
2010-03-10 13:23 ` [tip:perf/pebs] perf, x86: Reorder intel_pmu_enable_all() tip-bot for Peter Zijlstra
2010-03-10 13:23 ` [tip:perf/pebs] perf, x86: Deal with multiple state bits for pebs-fmt1 tip-bot for Peter Zijlstra
2010-03-10 13:23 ` [tip:perf/pebs] perf, x86: Fix silly bug in intel_pmu_pebs_{enable,disable} tip-bot for Peter Zijlstra
2010-03-10 13:23 ` [tip:perf/pebs] perf, x86: Don't reset the LBR as frequently tip-bot for Peter Zijlstra
2010-03-10 13:24 ` [tip:perf/pebs] perf, x86: Remove checking_{wr,rd}msr() usage tip-bot for Peter Zijlstra
2010-03-10 13:24 ` [tip:perf/pebs] perf, x86: Fixup the PEBS handler for Core2 cpus tip-bot for Peter Zijlstra
2010-03-10 13:24 ` [tip:perf/pebs] perf, x86: Fix LBR read-out tip-bot for Peter Zijlstra
2010-03-10 13:25 ` [tip:perf/pebs] perf, x86: Add INSTRUCTION_DECODER config flag tip-bot for Ingo Molnar
2010-03-10 13:25 ` [tip:perf/pebs] perf, x86: Fix the !CONFIG_CPU_SUP_INTEL build tip-bot for Ingo Molnar
2010-03-11 14:41 ` [tip:perf/urgent] perf, ppc: Fix compile error due to new cpu notifiers tip-bot for Peter Zijlstra
2010-03-11 14:41 ` [tip:sched/core] sched: Fix pick_next_highest_task_rt() for cgroups tip-bot for Peter Zijlstra
2010-04-02 19:10 ` [tip:perf/core] perf, x86: Fix __initconst vs const tip-bot for Peter Zijlstra
2010-04-02 19:10 ` [tip:perf/core] perf, x86: Add Nehalem programming quirk to Westmere tip-bot for Peter Zijlstra
2010-04-02 19:13 ` [tip:sched/core] sched: Fix TASK_WAKING vs fork deadlock tip-bot for Peter Zijlstra
2010-04-02 19:13 ` [tip:sched/core] sched: Optimize task_rq_lock() tip-bot for Peter Zijlstra
2010-04-02 19:13 ` [tip:sched/core] sched: Fix nr_uninterruptible count tip-bot for Peter Zijlstra
2010-04-02 19:14 ` [tip:sched/core] sched: Add enqueue/dequeue flags tip-bot for Peter Zijlstra
2010-04-23 10:50 ` [tip:sched/core] sched: Pre-compute cpumask_weight(sched_domain_span(sd)) tip-bot for Peter Zijlstra
2010-05-07 18:41 ` [tip:perf/core] perf: Annotate perf_event_read_group() vs perf_event_release_kernel() tip-bot for Peter Zijlstra
2010-05-07 18:43 ` [tip:perf/core] perf, x86: Remove PEBS SAMPLE_RAW support tip-bot for Peter Zijlstra
2010-05-07 18:43 ` [tip:perf/core] perf, x86: Consolidate some code repetition tip-bot for Peter Zijlstra
2010-05-07 18:44 ` [tip:perf/core] perf, x86: Improve the PEBS ABI tip-bot for Peter Zijlstra
2010-05-11 7:24 ` [tip:perf/core] Revert "perf: Fix exit() vs PERF_FORMAT_GROUP" tip-bot for Ingo Molnar
2010-05-17 21:09 ` [tip:perf/core] perf symbols: symbol inconsistency message should be done only at verbose=1 tip-bot for Arnaldo Carvalho de Melo
2010-05-17 22:33 ` [tip:perf/core] perf tools: Add mode to build without newt support tip-bot for Arnaldo Carvalho de Melo
2010-05-18 17:15 ` [tip:perf/core] perf/ftrace: Optimize perf/tracepoint interaction for single events tip-bot for Peter Zijlstra
2010-05-19 7:58 ` Frederic Weisbecker
2010-05-19 8:18 ` Peter Zijlstra
2010-05-19 8:23 ` Frederic Weisbecker
2010-05-19 8:31 ` Peter Zijlstra
2010-05-19 8:58 ` Peter Zijlstra
2010-05-19 9:06 ` Frederic Weisbecker
2010-05-19 9:12 ` Peter Zijlstra
2010-05-19 9:13 ` Frederic Weisbecker
2010-05-21 11:27 ` [tip:perf/core] perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint interaction tip-bot for Peter Zijlstra
2010-05-18 17:16 ` [tip:perf/core] perf: Disallow mmap() on per-task inherited events tip-bot for Peter Zijlstra
2010-05-18 17:16 ` [tip:perf/core] perf: Optimize the perf_output() path by removing IRQ-disables tip-bot for Peter Zijlstra
2010-05-18 17:17 ` [tip:perf/core] perf: Optimize the hotpath by converting the perf output buffer to local_t tip-bot for Peter Zijlstra
2010-05-18 17:17 ` [tip:perf/core] perf: Optimize perf_output_*() by avoiding local_xchg() tip-bot for Peter Zijlstra
2010-05-31 7:19 ` [tip:perf/urgent] perf_events: Fix races and clean up perf_event and perf_mmap_data interaction tip-bot for Peter Zijlstra
2010-05-31 7:19 ` [tip:perf/urgent] perf_events: Fix races in group composition tip-bot for Peter Zijlstra
2010-06-08 20:55 ` [tip:perf/core] perf: Fix signed comparison in perf_adjust_period() tip-bot for Peter Zijlstra
2010-06-08 20:55 ` [tip:sched/core] sched: Fix PROVE_RCU vs cpu_cgroup tip-bot for Peter Zijlstra
2010-06-08 20:55 ` [tip:perf/core] perf, x86: Small fix to cpuid10_edx tip-bot for Livio Soares
2010-06-09 10:14 ` [tip:perf/core] perf, trace: Inline perf_swevent_put_recursion_context() tip-bot for Peter Zijlstra
2010-06-09 10:15 ` [tip:perf/core] perf, trace: Remove superfluous rcu_read_lock() tip-bot for Peter Zijlstra
2010-06-09 10:16 ` [tip:perf/core] perf: Rename perf_mmap_data to perf_buffer tip-bot for Peter Zijlstra
2010-06-09 10:16 ` [tip:perf/core] perf: Simplify the ring-buffer logic: make perf_buffer_alloc() do everything needed tip-bot for Peter Zijlstra
2010-06-09 10:17 ` [tip:perf/core] arch: Implement local64_t tip-bot for Peter Zijlstra
2010-06-09 10:17 ` [tip:perf/core] perf: Add perf_event_count() tip-bot for Peter Zijlstra
2010-06-09 10:17 ` [tip:perf/core] perf: Add perf_event::child_count tip-bot for Peter Zijlstra
2010-06-09 10:18 ` [tip:perf/core] perf: Convert perf_event to local_t tip-bot for Peter Zijlstra
2010-06-09 10:18 ` [tip:perf/core] perf: Fix build breakage for architecutes without atomic64_t tip-bot for Peter Zijlstra
2010-07-17 11:12 ` [tip:sched/urgent] sched: Revert nohz_ratelimit() for now tip-bot for Peter Zijlstra
2010-07-18 10:33 ` [tip:perf/core] perf ui: Make END go to the last entry, not the top of the last page tip-bot for Arnaldo Carvalho de Melo
2010-07-18 10:34 ` [tip:perf/core] perf hists: Factor out duplicated code tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:49 ` [tip:perf/core] perf sort: Make column width code per hists instance tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:49 ` [tip:perf/core] perf ui: Restore SPACE as an alias to PGDN in annotate tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:49 ` [tip:perf/core] perf hist: Introduce routine to measure lenght of formatted entry tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:50 ` [tip:perf/core] perf ui: Consider the refreshed dimensions in ui_browser__show tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:50 ` [tip:perf/core] perf ui: Show the scroll bar over the left window frame tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:50 ` [tip:perf/core] perf ui: New hists tree widget tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:51 ` [tip:perf/core] perf report: Don't abbreviate file paths relative to the cwd tip-bot for Dave Martin
2010-08-02 7:51 ` [tip:perf/core] perf tools: Remove unneeded code for tracking the cwd in perf sessions tip-bot for Dave Martin
2010-08-02 7:51 ` [tip:perf/core] perf man pages: Fix cut'n'paste error tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:52 ` [tip:perf/core] perf record: Release resources at exit tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:52 ` [tip:perf/core] perf symbols: Precisely specify if dso->{long,short}_name should be freed tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:52 ` [tip:perf/core] perf tools: Factor out buildid reading and make it implicit in dso__load tip-bot for Dave Martin
2010-08-02 7:52 ` [tip:perf/core] perf tools: remove extra build-id check factored into dso__load tip-bot for Dave Martin
2010-08-02 7:53 ` [tip:perf/core] perf symbols: Improve debug image search when loading symbols tip-bot for Dave Martin
2010-08-02 7:53 ` [tip:perf/core] perf tui: Make CTRL+Z suspend perf tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:54 ` [tip:perf/core] perf tools: Release thread resources on PERF_RECORD_EXIT tip-bot for Arnaldo Carvalho de Melo
2010-08-02 7:54 ` [tip:perf/core] perf tools: Release session and symbol resources on exit tip-bot for Arnaldo Carvalho de Melo
2010-08-03 5:54 ` [tip:perf/core] perf session: Free the ref_reloc_sym memory at the right place tip-bot for Arnaldo Carvalho de Melo
2010-08-03 5:54 ` [tip:perf/core] perf session: Invalidate last_match when removing threads from rb_tree tip-bot for Arnaldo Carvalho de Melo
2010-08-03 5:55 ` [tip:perf/core] perf tools: Don't keep unreferenced maps when unmaps are detected tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:04 ` [tip:perf/core] perf symbols: Store the symbol binding tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:04 ` [tip:perf/core] perf ui: Add a map browser tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:04 ` [tip:perf/core] perf ui: Shorten ui_browser->refresh_entries to refresh tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:05 ` [tip:perf/core] perf hists: Handle verbose in hists__sort_list_width tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:05 ` [tip:perf/core] perf hists: Fixup addr snprintf width on 32 bit arches tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:05 ` [tip:perf/core] perf ui: Add search by name/addr to the map__browser tip-bot for Arnaldo Carvalho de Melo
2010-08-06 17:06 ` [tip:perf/core] perf report: Speed up exit path tip-bot for Arnaldo Carvalho de Melo
2010-08-07 7:01 ` [tip:perf/core] perf tui: Introduce list_head based generic ui_browser refresh routine tip-bot for Arnaldo Carvalho de Melo
2010-08-07 7:01 ` [tip:perf/core] perf ui: Start breaking down newt.c into multiple files tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:39 ` [tip:perf/core] perf ui: Shorten ui_browser member names tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:40 ` [tip:perf/core] perf ui: Move ui_helpline routines to separate file in util/ui/ tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:40 ` [tip:perf/core] perf ui: Move ui_progress " tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:40 ` [tip:perf/core] perf ui: Move annotate browser to util/ui/browsers/ tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:41 ` [tip:perf/core] perf ui: Move map " tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:41 ` tip-bot for Arnaldo Carvalho de Melo [this message]
2010-08-11 7:42 ` [tip:perf/core] perf ui: Complete the breakdown of util/newt.c tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:42 ` [tip:perf/core] perf annotate: Sort by hottest lines in the TUI tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:42 ` [tip:perf/core] perf ui: Make SPACE work as PGDN in all browsers tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:43 ` [tip:perf/core] perf annotate: Cycle thru sorted lines with samples tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:43 ` [tip:perf/core] perf ui browser: Add ui_browser__show counterpart: __hide tip-bot for Arnaldo Carvalho de Melo
2010-08-11 7:43 ` [tip:perf/core] perf ui hist browser: Fixup key bindings tip-bot for Arnaldo Carvalho de Melo
2010-08-12 20:03 ` [tip:perf/urgent] perf: Add back list_head data types tip-bot for Ingo Molnar
2010-08-16 17:32 ` [tip:perf/urgent] perf annotate tui: Fix exit and RIGHT keys handling tip-bot for Arnaldo Carvalho de Melo
2010-08-20 12:39 ` [tip:perf/core] perf ui browser: Abstract some more slang operations tip-bot for Arnaldo Carvalho de Melo
2010-08-20 12:40 ` [tip:perf/core] perf ui browser: Return the exit key in all browsers tip-bot for Arnaldo Carvalho de Melo
2010-08-20 12:40 ` [tip:perf/core] perf ui browser: Add routines to compactly specify exit keys tip-bot for Arnaldo Carvalho de Melo
2010-08-21 20:18 ` [tip:perf/core] perf tools: Add --tui and --stdio to choose the UI tip-bot for Arnaldo Carvalho de Melo
2010-08-30 8:33 ` [tip:perf/core] perf hists: Fix hist_entry__init_have_children tip-bot for Arnaldo Carvalho de Melo
2010-08-30 8:34 ` [tip:perf/core] perf hists browser: replace rb_first() != NULL by !RB_EMPTY_ROOT() tip-bot for Arnaldo Carvalho de Melo
2010-08-30 8:34 ` [tip:perf/core] perf hists browser: Init the has_children fields just once tip-bot for Arnaldo Carvalho de Melo
2010-08-30 8:34 ` [tip:perf/core] perf hists browser: Introduce "expand/collapse all callchains" action tip-bot for Arnaldo Carvalho de Melo
2010-09-09 19:45 ` [tip:perf/core] perf: Fix CPU hotplug tip-bot for Peter Zijlstra
2010-09-09 19:47 ` [tip:perf/core] perf: Deconstify struct pmu tip-bot for Peter Zijlstra
2010-09-09 19:47 ` [tip:perf/core] perf: Register PMU implementations tip-bot for Peter Zijlstra
2010-09-09 19:48 ` [tip:perf/core] perf: Unindent labels tip-bot for Peter Zijlstra
2010-09-09 19:48 ` [tip:perf/core] perf: Reduce perf_disable() usage tip-bot for Peter Zijlstra
2010-09-09 19:49 ` [tip:perf/core] perf: Per PMU disable tip-bot for Peter Zijlstra
2010-09-09 19:49 ` [tip:perf/core] perf: Default PMU ops tip-bot for Peter Zijlstra
2010-09-09 19:49 ` [tip:perf/core] perf: Shrink hw_perf_event tip-bot for Peter Zijlstra
2010-09-09 19:50 ` [tip:perf/core] perf: Rework the PMU methods tip-bot for Peter Zijlstra
2010-09-11 8:16 ` Michael Cree
2010-09-11 9:40 ` Peter Zijlstra
2010-09-12 5:33 ` Michael Cree
2010-09-12 5:37 ` [PATCH] alpha: Fix HW performance counters to be stopped properly Michael Cree
2010-09-15 10:02 ` [tip:perf/core] " tip-bot for Michael Cree
2010-09-13 12:15 ` [tip:perf/core] perf: Rework the PMU methods Peter Zijlstra
2010-09-13 13:18 ` Peter Zijlstra
2010-09-14 10:11 ` Michael Cree
2010-09-14 14:07 ` Peter Zijlstra
2010-09-15 20:25 ` Michael Cree
2010-09-09 19:50 ` [tip:perf/core] perf: Remove the sysfs bits tip-bot for Peter Zijlstra
2010-09-09 19:50 ` [tip:perf/core] perf: Separate find_get_context() from event initialization tip-bot for Peter Zijlstra
2010-09-09 19:51 ` [tip:perf/core] perf: Remove the swevent hash-table from the cpu context tip-bot for Peter Zijlstra
2010-09-09 19:51 ` [tip:perf/core] perf: Per cpu-context rotation timer tip-bot for Peter Zijlstra
2010-09-09 19:51 ` [tip:perf/core] perf: Per-pmu-per-cpu contexts tip-bot for Peter Zijlstra
2010-09-10 14:54 ` Frederic Weisbecker
2010-09-10 15:37 ` Paul E. McKenney
2010-09-10 15:46 ` Peter Zijlstra
2010-09-10 16:05 ` Paul E. McKenney
2010-09-10 15:56 ` Peter Zijlstra
2010-09-09 19:52 ` [tip:perf/core] perf: Move some code around tip-bot for Peter Zijlstra
2010-09-09 19:52 ` [tip:perf/core] perf: Clean up perf_event_context allocation tip-bot for Peter Zijlstra
2010-09-09 19:52 ` [tip:perf/core] perf: Multiple task contexts tip-bot for Peter Zijlstra
2010-09-09 19:53 ` [tip:perf/core] perf: Provide a separate task context for swevents tip-bot for Peter Zijlstra
2010-09-09 19:53 ` [tip:perf/core] perf: Optimize context ops tip-bot for Peter Zijlstra
2010-09-09 19:54 ` [tip:perf/core] perf: Fix up delayed_put_task_struct() tip-bot for Peter Zijlstra
2010-09-10 14:32 ` [tip:perf/core] perf: Ensure we call add_event_to_ctx() with the right locks held tip-bot for Peter Zijlstra
2010-09-10 15:48 ` [tip:perf/core] perf: Fix perf_init_event() tip-bot for Peter Zijlstra
2010-09-13 15:18 ` [tip:perf/core] perf: Sanitize the RCU logic tip-bot for Peter Zijlstra
2010-09-13 15:19 ` [tip:perf/core] perf: Fix free_event() tip-bot for Peter Zijlstra
2010-10-18 19:15 ` [tip:sched/core] sched: Unindent labels tip-bot for Peter Zijlstra
2010-10-18 19:22 ` [tip:perf/core] perf: Optimize sw events tip-bot for Peter Zijlstra
2010-10-18 19:22 ` [tip:perf/core] jump_label: Add COND_STMT(), reducer wrappery tip-bot for Peter Zijlstra
2010-10-26 10:22 ` [tip:perf/urgent] perf python scripting: Improve the failed-syscalls-by-pid script tip-bot for Arnaldo Carvalho de Melo
2010-10-26 10:22 ` [tip:perf/urgent] perf python scripting: Improve the syscalls-counts script tip-bot for Arnaldo Carvalho de Melo
2010-10-26 10:22 ` [tip:perf/urgent] perf python scripting: print the syscall name on sctop tip-bot for Arnaldo Carvalho de Melo
2010-10-26 10:23 ` [tip:perf/urgent] perf python scripting: Improve the syscalls-by-pid script tip-bot for Arnaldo Carvalho de Melo
2010-10-26 10:23 ` [tip:perf/urgent] perf python scripting: Support fedora 11 (audit 1.7.17) tip-bot for Arnaldo Carvalho de Melo
2010-10-27 11:01 ` [tip:perf/urgent] perf scripting: Shut up 'perf record' final status tip-bot for Arnaldo Carvalho de Melo
2010-10-27 11:01 ` [tip:perf/urgent] perf python scripting: Fixup cut'n'paste error in sctop script tip-bot for Arnaldo Carvalho de Melo
2010-10-27 11:02 ` [tip:perf/urgent] perf python scripting: Add futex-contention script tip-bot for Arnaldo Carvalho de Melo
2010-11-21 13:43 ` [tip:perf/core] perf tools: Change my maintainer address tip-bot for Arnaldo Carvalho de Melo
2010-11-23 10:22 ` [tip:sched/core] sched: Fix UP build breakage tip-bot for Peter Zijlstra
2010-11-23 10:22 ` [tip:sched/core] cpu: Remove incorrect BUG_ON tip-bot for Peter Zijlstra
2010-11-23 14:39 ` Oleg Nesterov
2010-11-23 15:05 ` Peter Zijlstra
2010-11-23 15:08 ` Oleg Nesterov
2010-11-23 17:16 ` Peter Zijlstra
2010-11-23 17:31 ` Oleg Nesterov
2010-11-23 10:23 ` [tip:sched/core] sched: Add some clock info to sched_debug tip-bot for Peter Zijlstra
2010-11-23 19:51 ` [tip:perf/urgent] perf record: Handle restrictive permissions in /proc/{kallsyms,modules} tip-bot for Arnaldo Carvalho de Melo
2010-11-26 15:00 ` [tip:perf/core] perf: Fix inherit vs. context rotation bug tip-bot for Thomas Gleixner
2010-11-28 4:36 ` Rakib Mullick
2010-11-26 15:01 ` [tip:perf/core] perf: Fix the software context switch counter tip-bot for Peter Zijlstra
2010-11-26 15:04 ` [tip:perf/core] perf: Ignore non-sampling overflows tip-bot for Peter Zijlstra
2010-11-26 19:20 ` Francis Moreau
2010-11-28 8:33 ` [tip:perf/core] perf record: Add option to disable collecting build-ids tip-bot for Arnaldo Carvalho de Melo
2010-11-29 10:22 ` Stephane Eranian
2010-11-29 15:14 ` Arnaldo Carvalho de Melo
2010-11-28 8:34 ` [tip:perf/core] perf events: Default to using event__process_lost tip-bot for Arnaldo Carvalho de Melo
2010-12-07 7:06 ` [tip:perf/urgent] perf record: Fix eternal wait for stillborn child tip-bot for Arnaldo Carvalho de Melo
2010-12-08 20:39 ` [tip:perf/urgent] perf: Fix duplicate events with multiple-pmu vs software events tip-bot for Peter Zijlstra
2010-12-08 20:42 ` [tip:perf/core] perf, amd: Remove the nb lock tip-bot for Peter Zijlstra
2010-12-08 20:42 ` [tip:perf/core] perf: Stop all counters on reboot tip-bot for Peter Zijlstra
2010-12-09 23:39 ` [tip:perf/core] perf session: Remove unneeded dump_printf calls tip-bot for Arnaldo Carvalho de Melo
2010-12-16 12:31 ` [tip:perf/core] perf, x86: Detect broken BIOSes that corrupt the PMU tip-bot for Peter Zijlstra
2010-12-16 12:33 ` [tip:perf/core] perf, x86: Provide a PEBS capable cycle event tip-bot for Peter Zijlstra
2010-12-22 11:28 ` [tip:perf/urgent] perf buildid-list: Fix error return for success tip-bot for Arnaldo Carvalho de Melo
2010-12-25 8:57 ` [tip:perf/core] perf symbols: Improve kallsyms symbol end addr calculation tip-bot for Arnaldo Carvalho de Melo
2010-12-25 8:58 ` [tip:perf/core] perf test: Look forward for symbol aliases tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:19 ` [tip:perf/core] perf script: Finish the rename from trace to script tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:19 ` [tip:perf/core] perf record: Fix use of sample_id_all userspace with !sample_id_all kernels tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:19 ` [tip:perf/core] perf script: Fix event ordering settings to work with older kernels tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:21 ` [tip:perf/core] perf tools: Introduce event selectors tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:21 ` [tip:perf/core] perf evsel: Adopt MATCH_EVENT macro from 'stat' tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:22 ` [tip:perf/core] perf util: Move do_read from session to util tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:22 ` [tip:perf/core] perf evsel: Delete the event selectors at exit tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:23 ` [tip:perf/core] perf evsel: Steal the counter reading routines from stat tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:23 ` [tip:perf/core] perf evsel: Introduce per cpu and per thread open helpers tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:24 ` [tip:perf/core] perf tools: Refactor cpumap to hold nr and the map tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:24 ` [tip:perf/core] perf tools: Refactor all_tids " tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:25 ` [tip:perf/core] perf evsel: Use {cpu,thread}_map to shorten list of parameters tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:25 ` [tip:perf/core] perf evsel: Auto allocate resources needed for some methods tip-bot for Arnaldo Carvalho de Melo
2011-01-04 8:26 ` [tip:perf/core] perf test: Add test for counting open syscalls tip-bot for Arnaldo Carvalho de Melo
2011-01-05 17:36 ` [tip:perf/core] perf test: Clarify some error reports in the open syscall test tip-bot for Arnaldo Carvalho de Melo
2011-01-05 17:37 ` [tip:perf/core] perf session: Warn about errors when processing pipe events too tip-bot for Arnaldo Carvalho de Melo
2011-01-05 17:37 ` [tip:perf/core] perf script: Use the default lost event handler tip-bot for Arnaldo Carvalho de Melo
2011-01-05 17:38 ` [tip:perf/core] perf script: Make some lists static tip-bot for Arnaldo Carvalho de Melo
2011-01-11 11:09 ` [tip:perf/urgent] perf sched: Fix allocation result check tip-bot for Arnaldo Carvalho de Melo
2011-01-11 11:10 ` [tip:perf/urgent] perf tools: Emit clearer message for sys_perf_event_open ENOENT return tip-bot for Arnaldo Carvalho de Melo
2011-01-11 11:11 ` [tip:perf/urgent] perf evsel: Support perf_evsel__open(cpus > 1 && threads > 1) tip-bot for Arnaldo Carvalho de Melo
2011-01-11 11:11 ` [tip:perf/urgent] perf session: Fix infinite loop in __perf_session__process_events tip-bot for Arnaldo Carvalho de Melo
2011-01-12 10:51 ` [tip:perf/urgent] perf evsel: Fix order of event list deletion tip-bot for Arnaldo Carvalho de Melo
2011-01-12 10:52 ` [tip:perf/urgent] perf top: Fix annotate segv tip-bot for Arnaldo Carvalho de Melo
2011-01-12 10:52 ` [tip:perf/urgent] Revert "perf tools: Emit clearer message for sys_perf_event_open ENOENT return" tip-bot for Arnaldo Carvalho de Melo
2011-01-18 8:48 ` [tip:perf/urgent] perf tools: Fix handling of wildcards in tracepoint event selectors tip-bot for Arnaldo Carvalho de Melo
2011-01-18 19:06 ` [tip:perf/urgent] perf: Fix contexted inheritance tip-bot for Peter Zijlstra
2011-01-21 15:37 ` [tip:perf/urgent] perf: Annotate cpuctx->ctx.mutex to avoid a lockdep splat tip-bot for Peter Zijlstra
2011-01-23 18:00 ` [tip:perf/urgent] perf test: Fix build on older glibcs tip-bot for Arnaldo Carvalho de Melo
2011-01-23 18:01 ` [tip:perf/urgent] perf tools: Add missing header, fixes build tip-bot for Arnaldo Carvalho de Melo
2011-01-23 18:02 ` [tip:perf/urgent] perf tools: Fix build when using gcc 3.4.6 tip-bot for Arnaldo Carvalho de Melo
2011-01-23 18:02 ` [tip:perf/urgent] perf tools: Fix build by checking if extra warnings are supported tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:14 ` [tip:perf/core] perf evsel: Introduce perf_evlist tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:14 ` [tip:perf/core] perf evlist: Adopt the pollfd array tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:14 ` [tip:perf/core] perf evsel: Support event groups tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:15 ` [tip:perf/core] perf evsel: Allow specifying if the inherit bit should be set tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:15 ` [tip:perf/core] perf top: Use perf_evsel__open tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:15 ` [tip:perf/core] perf record: " tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:16 ` [tip:perf/core] perf evsel: Introduce mmap support tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:16 ` [tip:perf/core] perf record: Use struct perf_mmap and helpers tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:17 ` [tip:perf/core] perf record: Move perf_mmap__write_tail to perf.h tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:17 ` [tip:perf/core] perf evlist: Move the mmap array from perf_evsel tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:17 ` [tip:perf/core] perf record: Use perf_evlist__mmap tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:18 ` [tip:perf/core] perf tools: Add missing cpu_map__delete() tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:18 ` [tip:perf/core] perf test: Check counts on all cpus in test__open_syscall_event_on_all_cpus tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:19 ` [tip:perf/core] perf evlist: Steal mmap reading routine from 'perf top' tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:19 ` [tip:perf/core] perf test: Add test for the evlist mmap routines tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:21 ` [tip:perf/core] perf top: Add native_safe_halt to skip symbols tip-bot for Arnaldo Carvalho de Melo
2011-01-26 7:23 ` [tip:perf/core] perf tools: Pass the struct opt to the wildcard parsing routine tip-bot for Arnaldo Carvalho de Melo
2009-08-04 8:32 ` [patch] perf tools: allow top users to switch between weighted and individual counter display Ingo Molnar
2009-08-04 8:46 ` Mike Galbraith
2009-08-04 8:56 ` Ingo Molnar
2009-08-04 11:36 ` [tip:perfcounters/core] perf top: Improve interactive key handling tip-bot for Mike Galbraith
2009-08-02 13:11 ` [tip:perfcounters/core] perf_counter tools: Allow top users to switch between weighted and individual counter display tip-bot for Mike Galbraith
-- strict thread matches above, loose matches on Subject: below --
2009-11-12 10:07 [patch] sched: fix/add missing update_rq_clock() calls Mike Galbraith
2009-11-12 11:01 ` Peter Zijlstra
2009-11-12 11:27 ` Ingo Molnar
2009-11-12 11:29 ` Peter Zijlstra
2009-11-12 11:34 ` Ingo Molnar
2009-11-12 11:36 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-d1b4f2491c3341c61c752049f73ba12553f978d8@git.kernel.org \
--to=acme@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).