mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 12:43:55 +08:00
c0443df1b6
Disabled by default as there are features found in the stdio based one that aren't implemented, like live annotation, filtering knobs data entry. Annotation hopefully will get somehow merged with the 'perf annotate' code. To use it: perf top --tui Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Tom Zanussi <tzanussi@gmail.com> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
81 lines
2.0 KiB
C
81 lines
2.0 KiB
C
#ifndef __PERF_TOP_H
|
|
#define __PERF_TOP_H 1
|
|
|
|
#include "types.h"
|
|
#include "../perf.h"
|
|
#include <stddef.h>
|
|
#include <pthread.h>
|
|
#include <linux/list.h>
|
|
#include <linux/rbtree.h>
|
|
|
|
struct perf_evlist;
|
|
struct perf_evsel;
|
|
|
|
struct source_line {
|
|
u64 eip;
|
|
unsigned long count[MAX_COUNTERS]; /* FIXME */
|
|
char *line;
|
|
struct source_line *next;
|
|
};
|
|
|
|
struct sym_entry_source {
|
|
struct source_line *source;
|
|
struct source_line *lines;
|
|
struct source_line **lines_tail;
|
|
pthread_mutex_t lock;
|
|
};
|
|
|
|
struct sym_entry {
|
|
struct rb_node rb_node;
|
|
struct list_head node;
|
|
unsigned long snap_count;
|
|
double weight;
|
|
int skip;
|
|
u16 name_len;
|
|
u8 origin;
|
|
struct map *map;
|
|
struct sym_entry_source *src;
|
|
unsigned long count[0];
|
|
};
|
|
|
|
static inline struct symbol *sym_entry__symbol(struct sym_entry *self)
|
|
{
|
|
return ((void *)self) + symbol_conf.priv_size;
|
|
}
|
|
|
|
struct perf_top {
|
|
struct perf_evlist *evlist;
|
|
/*
|
|
* Symbols will be added here in perf_event__process_sample and will
|
|
* get out after decayed.
|
|
*/
|
|
struct list_head active_symbols;
|
|
pthread_mutex_t active_symbols_lock;
|
|
u64 samples;
|
|
u64 kernel_samples, us_samples;
|
|
u64 exact_samples;
|
|
u64 guest_us_samples, guest_kernel_samples;
|
|
int print_entries, count_filter, delay_secs;
|
|
int display_weighted, freq, rb_entries;
|
|
int sym_counter, target_pid, target_tid;
|
|
bool hide_kernel_symbols, hide_user_symbols, zero;
|
|
const char *cpu_list;
|
|
struct perf_evsel *sym_evsel;
|
|
};
|
|
|
|
size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size);
|
|
void perf_top__reset_sample_counters(struct perf_top *top);
|
|
float perf_top__decay_samples(struct perf_top *top, struct rb_root *root);
|
|
void perf_top__find_widths(struct perf_top *top, struct rb_root *root,
|
|
int *dso_width, int *dso_short_width, int *sym_width);
|
|
|
|
#ifdef NO_NEWT_SUPPORT
|
|
static inline int perf_top__tui_browser(struct perf_top *top __used)
|
|
{
|
|
return 0;
|
|
}
|
|
#else
|
|
int perf_top__tui_browser(struct perf_top *top);
|
|
#endif
|
|
#endif /* __PERF_TOP_H */
|