perf hists: Export a couple of hist functions
These are necessary for multi threaded sample processing: - hists__get__get_rotate_entries_in() - hists__collapse_insert_entry() - __hists__init() Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Noel Grandin <noelgrandin@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1452158050-28061-14-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
21e6d84286
Коммит
fc284be9d8
|
@ -1007,9 +1007,8 @@ void hist_entry__delete(struct hist_entry *he)
|
|||
* collapse the histogram
|
||||
*/
|
||||
|
||||
static bool hists__collapse_insert_entry(struct hists *hists __maybe_unused,
|
||||
struct rb_root *root,
|
||||
struct hist_entry *he)
|
||||
bool hists__collapse_insert_entry(struct hists *hists __maybe_unused,
|
||||
struct rb_root *root, struct hist_entry *he)
|
||||
{
|
||||
struct rb_node **p = &root->rb_node;
|
||||
struct rb_node *parent = NULL;
|
||||
|
@ -1049,7 +1048,7 @@ static bool hists__collapse_insert_entry(struct hists *hists __maybe_unused,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct rb_root *hists__get_rotate_entries_in(struct hists *hists)
|
||||
struct rb_root *hists__get_rotate_entries_in(struct hists *hists)
|
||||
{
|
||||
struct rb_root *root;
|
||||
|
||||
|
@ -1584,10 +1583,8 @@ int perf_hist_config(const char *var, const char *value)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int hists_evsel__init(struct perf_evsel *evsel)
|
||||
int __hists__init(struct hists *hists)
|
||||
{
|
||||
struct hists *hists = evsel__hists(evsel);
|
||||
|
||||
memset(hists, 0, sizeof(*hists));
|
||||
hists->entries_in_array[0] = hists->entries_in_array[1] = RB_ROOT;
|
||||
hists->entries_in = &hists->entries_in_array[0];
|
||||
|
@ -1627,6 +1624,14 @@ static void hists_evsel__exit(struct perf_evsel *evsel)
|
|||
hists__delete_all_entries(hists);
|
||||
}
|
||||
|
||||
static int hists_evsel__init(struct perf_evsel *evsel)
|
||||
{
|
||||
struct hists *hists = evsel__hists(evsel);
|
||||
|
||||
__hists__init(hists);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX We probably need a hists_evsel__exit() to free the hist_entries
|
||||
* stored in the rbtree...
|
||||
|
|
|
@ -185,6 +185,11 @@ static inline struct hists *evsel__hists(struct perf_evsel *evsel)
|
|||
}
|
||||
|
||||
int hists__init(void);
|
||||
int __hists__init(struct hists *hists);
|
||||
|
||||
struct rb_root *hists__get_rotate_entries_in(struct hists *hists);
|
||||
bool hists__collapse_insert_entry(struct hists *hists __maybe_unused,
|
||||
struct rb_root *root, struct hist_entry *he);
|
||||
|
||||
struct perf_hpp {
|
||||
char *buf;
|
||||
|
|
Загрузка…
Ссылка в новой задаче