mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 04:11:49 +00:00
perf tools: Get rid of obsolete hist_entry__sort_list
Now we moved to the perf_hpp_[_sort]_list so no need to keep the old hist_entry__sort_list and sort__first_dimension. Also the hist_entry__sort_snprintf() can be gone as hist_entry__snprintf() provides the functionality. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1400480762-22852-18-git-send-email-namhyung@kernel.org Signed-off-by: Jiri Olsa <jolsa@kernel.org>
This commit is contained in:
parent
678a500d07
commit
cfaa154b23
@ -459,47 +459,29 @@ next:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int hist_entry__sort_snprintf(struct hist_entry *he, char *s, size_t size,
|
|
||||||
struct hists *hists)
|
|
||||||
{
|
|
||||||
const char *sep = symbol_conf.field_sep;
|
|
||||||
struct sort_entry *se;
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
list_for_each_entry(se, &hist_entry__sort_list, list) {
|
|
||||||
if (se->elide)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ret += scnprintf(s + ret, size - ret, "%s", sep ?: " ");
|
|
||||||
ret += se->se_snprintf(he, s + ret, size - ret,
|
|
||||||
hists__col_len(hists, se->se_width_idx));
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See hists__fprintf to match the column widths
|
* See hists__fprintf to match the column widths
|
||||||
*/
|
*/
|
||||||
unsigned int hists__sort_list_width(struct hists *hists)
|
unsigned int hists__sort_list_width(struct hists *hists)
|
||||||
{
|
{
|
||||||
struct perf_hpp_fmt *fmt;
|
struct perf_hpp_fmt *fmt;
|
||||||
struct sort_entry *se;
|
int ret = 0;
|
||||||
int i = 0, ret = 0;
|
bool first = true;
|
||||||
struct perf_hpp dummy_hpp;
|
struct perf_hpp dummy_hpp;
|
||||||
|
|
||||||
perf_hpp__for_each_format(fmt) {
|
perf_hpp__for_each_format(fmt) {
|
||||||
if (i)
|
if (perf_hpp__should_skip(fmt))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
ret += 2;
|
ret += 2;
|
||||||
|
|
||||||
ret += fmt->width(fmt, &dummy_hpp, hists_to_evsel(hists));
|
ret += fmt->width(fmt, &dummy_hpp, hists_to_evsel(hists));
|
||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry(se, &hist_entry__sort_list, list)
|
if (verbose && sort__has_sym) /* Addr + origin */
|
||||||
if (!se->elide)
|
|
||||||
ret += 2 + hists__col_len(hists, se->se_width_idx);
|
|
||||||
|
|
||||||
if (verbose) /* Addr + origin */
|
|
||||||
ret += 3 + BITS_PER_LONG / 4;
|
ret += 3 + BITS_PER_LONG / 4;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -183,7 +183,8 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
|
|||||||
* the symbol. No need to print it otherwise it appears as
|
* the symbol. No need to print it otherwise it appears as
|
||||||
* displayed twice.
|
* displayed twice.
|
||||||
*/
|
*/
|
||||||
if (!i++ && sort__first_dimension == SORT_SYM)
|
if (!i++ && field_order == NULL &&
|
||||||
|
sort_order && !prefixcmp(sort_order, "sym"))
|
||||||
continue;
|
continue;
|
||||||
if (!printed) {
|
if (!printed) {
|
||||||
ret += callchain__fprintf_left_margin(fp, left_margin);
|
ret += callchain__fprintf_left_margin(fp, left_margin);
|
||||||
@ -296,13 +297,20 @@ static size_t hist_entry__callchain_fprintf(struct hist_entry *he,
|
|||||||
int left_margin = 0;
|
int left_margin = 0;
|
||||||
u64 total_period = hists->stats.total_period;
|
u64 total_period = hists->stats.total_period;
|
||||||
|
|
||||||
if (sort__first_dimension == SORT_COMM) {
|
if (field_order == NULL && (sort_order == NULL ||
|
||||||
struct sort_entry *se = list_first_entry(&hist_entry__sort_list,
|
!prefixcmp(sort_order, "comm"))) {
|
||||||
typeof(*se), list);
|
struct perf_hpp_fmt *fmt;
|
||||||
left_margin = hists__col_len(hists, se->se_width_idx);
|
|
||||||
left_margin -= thread__comm_len(he->thread);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
perf_hpp__for_each_format(fmt) {
|
||||||
|
if (!perf_hpp__is_sort_entry(fmt))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* must be 'comm' sort entry */
|
||||||
|
left_margin = fmt->width(fmt, NULL, hists_to_evsel(hists));
|
||||||
|
left_margin -= thread__comm_len(he->thread);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return hist_entry_callchain__fprintf(he, total_period, left_margin, fp);
|
return hist_entry_callchain__fprintf(he, total_period, left_margin, fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,9 +22,6 @@ int sort__has_sym = 0;
|
|||||||
int sort__has_dso = 0;
|
int sort__has_dso = 0;
|
||||||
enum sort_mode sort__mode = SORT_MODE__NORMAL;
|
enum sort_mode sort__mode = SORT_MODE__NORMAL;
|
||||||
|
|
||||||
enum sort_type sort__first_dimension;
|
|
||||||
|
|
||||||
LIST_HEAD(hist_entry__sort_list);
|
|
||||||
|
|
||||||
static int repsep_snprintf(char *bf, size_t size, const char *fmt, ...)
|
static int repsep_snprintf(char *bf, size_t size, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
@ -1190,7 +1187,7 @@ static int __sort_dimension__add_hpp_output(struct sort_dimension *sd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __sort_dimension__add(struct sort_dimension *sd, enum sort_type idx)
|
static int __sort_dimension__add(struct sort_dimension *sd)
|
||||||
{
|
{
|
||||||
if (sd->taken)
|
if (sd->taken)
|
||||||
return 0;
|
return 0;
|
||||||
@ -1201,10 +1198,6 @@ static int __sort_dimension__add(struct sort_dimension *sd, enum sort_type idx)
|
|||||||
if (sd->entry->se_collapse)
|
if (sd->entry->se_collapse)
|
||||||
sort__need_collapse = 1;
|
sort__need_collapse = 1;
|
||||||
|
|
||||||
if (list_empty(&hist_entry__sort_list))
|
|
||||||
sort__first_dimension = idx;
|
|
||||||
|
|
||||||
list_add_tail(&sd->entry->list, &hist_entry__sort_list);
|
|
||||||
sd->taken = 1;
|
sd->taken = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1268,7 +1261,7 @@ int sort_dimension__add(const char *tok)
|
|||||||
sort__has_dso = 1;
|
sort__has_dso = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return __sort_dimension__add(sd, i);
|
return __sort_dimension__add(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(hpp_sort_dimensions); i++) {
|
for (i = 0; i < ARRAY_SIZE(hpp_sort_dimensions); i++) {
|
||||||
@ -1292,7 +1285,7 @@ int sort_dimension__add(const char *tok)
|
|||||||
if (sd->entry == &sort_sym_from || sd->entry == &sort_sym_to)
|
if (sd->entry == &sort_sym_from || sd->entry == &sort_sym_to)
|
||||||
sort__has_sym = 1;
|
sort__has_sym = 1;
|
||||||
|
|
||||||
__sort_dimension__add(sd, i + __SORT_BRANCH_STACK);
|
__sort_dimension__add(sd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1308,7 +1301,7 @@ int sort_dimension__add(const char *tok)
|
|||||||
if (sd->entry == &sort_mem_daddr_sym)
|
if (sd->entry == &sort_mem_daddr_sym)
|
||||||
sort__has_sym = 1;
|
sort__has_sym = 1;
|
||||||
|
|
||||||
__sort_dimension__add(sd, i + __SORT_MEMORY_MODE);
|
__sort_dimension__add(sd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1395,7 +1388,8 @@ static void sort_entry__setup_elide(struct sort_entry *se,
|
|||||||
|
|
||||||
void sort__setup_elide(FILE *output)
|
void sort__setup_elide(FILE *output)
|
||||||
{
|
{
|
||||||
struct sort_entry *se;
|
struct perf_hpp_fmt *fmt;
|
||||||
|
struct hpp_sort_entry *hse;
|
||||||
|
|
||||||
sort_entry__setup_elide(&sort_dso, symbol_conf.dso_list,
|
sort_entry__setup_elide(&sort_dso, symbol_conf.dso_list,
|
||||||
"dso", output);
|
"dso", output);
|
||||||
@ -1436,13 +1430,22 @@ void sort__setup_elide(FILE *output)
|
|||||||
* It makes no sense to elide all of sort entries.
|
* It makes no sense to elide all of sort entries.
|
||||||
* Just revert them to show up again.
|
* Just revert them to show up again.
|
||||||
*/
|
*/
|
||||||
list_for_each_entry(se, &hist_entry__sort_list, list) {
|
perf_hpp__for_each_format(fmt) {
|
||||||
if (!se->elide)
|
if (!perf_hpp__is_sort_entry(fmt))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hse = container_of(fmt, struct hpp_sort_entry, hpp);
|
||||||
|
if (!hse->se->elide)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry(se, &hist_entry__sort_list, list)
|
perf_hpp__for_each_format(fmt) {
|
||||||
se->elide = false;
|
if (!perf_hpp__is_sort_entry(fmt))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hse = container_of(fmt, struct hpp_sort_entry, hpp);
|
||||||
|
hse->se->elide = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int output_field_add(char *tok)
|
static int output_field_add(char *tok)
|
||||||
|
Loading…
Reference in New Issue
Block a user