@@ -195,12 +195,14 @@ static struct hist_entry_ops c2c_entry_ops = {
195195
196196static int c2c_hists__init (struct c2c_hists * hists ,
197197 const char * sort ,
198- int nr_header_lines );
198+ int nr_header_lines ,
199+ struct perf_env * env );
199200
200201static struct c2c_hists *
201202he__get_c2c_hists (struct hist_entry * he ,
202203 const char * sort ,
203- int nr_header_lines )
204+ int nr_header_lines ,
205+ struct perf_env * env )
204206{
205207 struct c2c_hist_entry * c2c_he ;
206208 struct c2c_hists * hists ;
@@ -214,7 +216,7 @@ he__get_c2c_hists(struct hist_entry *he,
214216 if (!hists )
215217 return NULL ;
216218
217- ret = c2c_hists__init (hists , sort , nr_header_lines );
219+ ret = c2c_hists__init (hists , sort , nr_header_lines , env );
218220 if (ret ) {
219221 free (hists );
220222 return NULL ;
@@ -350,7 +352,7 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
350352
351353 mi = mi_dup ;
352354
353- c2c_hists = he__get_c2c_hists (he , c2c .cl_sort , 2 );
355+ c2c_hists = he__get_c2c_hists (he , c2c .cl_sort , 2 , machine -> env );
354356 if (!c2c_hists )
355357 goto free_mi ;
356358
@@ -1966,7 +1968,8 @@ static struct c2c_fmt *get_format(const char *name)
19661968 return c2c_fmt ;
19671969}
19681970
1969- static int c2c_hists__init_output (struct perf_hpp_list * hpp_list , char * name )
1971+ static int c2c_hists__init_output (struct perf_hpp_list * hpp_list , char * name ,
1972+ struct perf_env * env __maybe_unused )
19701973{
19711974 struct c2c_fmt * c2c_fmt = get_format (name );
19721975 int level = 0 ;
@@ -1980,14 +1983,14 @@ static int c2c_hists__init_output(struct perf_hpp_list *hpp_list, char *name)
19801983 return 0 ;
19811984}
19821985
1983- static int c2c_hists__init_sort (struct perf_hpp_list * hpp_list , char * name )
1986+ static int c2c_hists__init_sort (struct perf_hpp_list * hpp_list , char * name , struct perf_env * env )
19841987{
19851988 struct c2c_fmt * c2c_fmt = get_format (name );
19861989 struct c2c_dimension * dim ;
19871990
19881991 if (!c2c_fmt ) {
19891992 reset_dimensions ();
1990- return sort_dimension__add (hpp_list , name , NULL , 0 );
1993+ return sort_dimension__add (hpp_list , name , /*evlist=*/ NULL , env , /*level=*/ 0 );
19911994 }
19921995
19931996 dim = c2c_fmt -> dim ;
@@ -2008,7 +2011,7 @@ static int c2c_hists__init_sort(struct perf_hpp_list *hpp_list, char *name)
20082011 \
20092012 for (tok = strtok_r((char *)_list, ", ", &tmp); \
20102013 tok; tok = strtok_r(NULL, ", ", &tmp)) { \
2011- ret = _fn(hpp_list, tok); \
2014+ ret = _fn(hpp_list, tok, env ); \
20122015 if (ret == -EINVAL) { \
20132016 pr_err("Invalid --fields key: `%s'", tok); \
20142017 break; \
@@ -2021,7 +2024,8 @@ static int c2c_hists__init_sort(struct perf_hpp_list *hpp_list, char *name)
20212024
20222025static int hpp_list__parse (struct perf_hpp_list * hpp_list ,
20232026 const char * output_ ,
2024- const char * sort_ )
2027+ const char * sort_ ,
2028+ struct perf_env * env )
20252029{
20262030 char * output = output_ ? strdup (output_ ) : NULL ;
20272031 char * sort = sort_ ? strdup (sort_ ) : NULL ;
@@ -2052,7 +2056,8 @@ static int hpp_list__parse(struct perf_hpp_list *hpp_list,
20522056
20532057static int c2c_hists__init (struct c2c_hists * hists ,
20542058 const char * sort ,
2055- int nr_header_lines )
2059+ int nr_header_lines ,
2060+ struct perf_env * env )
20562061{
20572062 __hists__init (& hists -> hists , & hists -> list );
20582063
@@ -2066,15 +2071,16 @@ static int c2c_hists__init(struct c2c_hists *hists,
20662071 /* Overload number of header lines.*/
20672072 hists -> list .nr_header_lines = nr_header_lines ;
20682073
2069- return hpp_list__parse (& hists -> list , NULL , sort );
2074+ return hpp_list__parse (& hists -> list , /*output=*/ NULL , sort , env );
20702075}
20712076
20722077static int c2c_hists__reinit (struct c2c_hists * c2c_hists ,
20732078 const char * output ,
2074- const char * sort )
2079+ const char * sort ,
2080+ struct perf_env * env )
20752081{
20762082 perf_hpp__reset_output_field (& c2c_hists -> list );
2077- return hpp_list__parse (& c2c_hists -> list , output , sort );
2083+ return hpp_list__parse (& c2c_hists -> list , output , sort , env );
20782084}
20792085
20802086#define DISPLAY_LINE_LIMIT 0.001
@@ -2207,8 +2213,9 @@ static int filter_cb(struct hist_entry *he, void *arg __maybe_unused)
22072213 return 0 ;
22082214}
22092215
2210- static int resort_cl_cb (struct hist_entry * he , void * arg __maybe_unused )
2216+ static int resort_cl_cb (struct hist_entry * he , void * arg )
22112217{
2218+ struct perf_env * env = arg ;
22122219 struct c2c_hist_entry * c2c_he ;
22132220 struct c2c_hists * c2c_hists ;
22142221 bool display = he__display (he , & c2c .shared_clines_stats );
@@ -2222,7 +2229,7 @@ static int resort_cl_cb(struct hist_entry *he, void *arg __maybe_unused)
22222229 c2c_he -> cacheline_idx = idx ++ ;
22232230 calc_width (c2c_he );
22242231
2225- c2c_hists__reinit (c2c_hists , c2c .cl_output , c2c .cl_resort );
2232+ c2c_hists__reinit (c2c_hists , c2c .cl_output , c2c .cl_resort , env );
22262233
22272234 hists__collapse_resort (& c2c_hists -> hists , NULL );
22282235 hists__output_resort_cb (& c2c_hists -> hists , NULL , filter_cb );
@@ -2334,7 +2341,7 @@ static int resort_shared_cl_cb(struct hist_entry *he, void *arg __maybe_unused)
23342341 return 0 ;
23352342}
23362343
2337- static int hists__iterate_cb (struct hists * hists , hists__resort_cb_t cb )
2344+ static int hists__iterate_cb (struct hists * hists , hists__resort_cb_t cb , void * arg )
23382345{
23392346 struct rb_node * next = rb_first_cached (& hists -> entries );
23402347 int ret = 0 ;
@@ -2343,7 +2350,7 @@ static int hists__iterate_cb(struct hists *hists, hists__resort_cb_t cb)
23432350 struct hist_entry * he ;
23442351
23452352 he = rb_entry (next , struct hist_entry , rb_node );
2346- ret = cb (he , NULL );
2353+ ret = cb (he , arg );
23472354 if (ret )
23482355 break ;
23492356 next = rb_next (& he -> rb_node );
@@ -2449,7 +2456,7 @@ static void print_cacheline(struct c2c_hists *c2c_hists,
24492456 hists__fprintf (& c2c_hists -> hists , false, 0 , 0 , 0 , out , false);
24502457}
24512458
2452- static void print_pareto (FILE * out )
2459+ static void print_pareto (FILE * out , struct perf_env * env )
24532460{
24542461 struct perf_hpp_list hpp_list ;
24552462 struct rb_node * nd ;
@@ -2474,7 +2481,7 @@ static void print_pareto(FILE *out)
24742481 "dcacheline" ;
24752482
24762483 perf_hpp_list__init (& hpp_list );
2477- ret = hpp_list__parse (& hpp_list , cl_output , NULL );
2484+ ret = hpp_list__parse (& hpp_list , cl_output , /*evlist=*/ NULL , env );
24782485
24792486 if (WARN_ONCE (ret , "failed to setup sort entries\n" ))
24802487 return ;
@@ -2539,7 +2546,7 @@ static void perf_c2c__hists_fprintf(FILE *out, struct perf_session *session)
25392546 fprintf (out , "=================================================\n" );
25402547 fprintf (out , "#\n" );
25412548
2542- print_pareto (out );
2549+ print_pareto (out , perf_session__env ( session ) );
25432550}
25442551
25452552#ifdef HAVE_SLANG_SUPPORT
@@ -3097,7 +3104,7 @@ static int perf_c2c__report(int argc, const char **argv)
30973104 goto out_session ;
30983105 }
30993106
3100- err = c2c_hists__init (& c2c .hists , "dcacheline" , 2 );
3107+ err = c2c_hists__init (& c2c .hists , "dcacheline" , 2 , perf_session__env ( session ) );
31013108 if (err ) {
31023109 pr_debug ("Failed to initialize hists\n" );
31033110 goto out_session ;
@@ -3181,13 +3188,13 @@ static int perf_c2c__report(int argc, const char **argv)
31813188 else if (c2c .display == DISPLAY_SNP_PEER )
31823189 sort_str = "tot_peer" ;
31833190
3184- c2c_hists__reinit (& c2c .hists , output_str , sort_str );
3191+ c2c_hists__reinit (& c2c .hists , output_str , sort_str , perf_session__env ( session ) );
31853192
31863193 ui_progress__init (& prog , c2c .hists .hists .nr_entries , "Sorting..." );
31873194
31883195 hists__collapse_resort (& c2c .hists .hists , NULL );
31893196 hists__output_resort_cb (& c2c .hists .hists , & prog , resort_shared_cl_cb );
3190- hists__iterate_cb (& c2c .hists .hists , resort_cl_cb );
3197+ hists__iterate_cb (& c2c .hists .hists , resort_cl_cb , perf_session__env ( session ) );
31913198
31923199 ui_progress__finish ();
31933200
0 commit comments