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
					
				
			
		
					 3 changed files with 43 additions and 50 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue