@@ -191,39 +191,6 @@ static int tp_event_has_id(const char *dir_path, struct dirent *evt_dir)
191
191
192
192
#define MAX_EVENT_LENGTH 512
193
193
194
- void parse_events__handle_error (struct parse_events_error * err , int idx ,
195
- char * str , char * help )
196
- {
197
- if (WARN (!str , "WARNING: failed to provide error string\n" )) {
198
- free (help );
199
- return ;
200
- }
201
- switch (err -> num_errors ) {
202
- case 0 :
203
- err -> idx = idx ;
204
- err -> str = str ;
205
- err -> help = help ;
206
- break ;
207
- case 1 :
208
- err -> first_idx = err -> idx ;
209
- err -> idx = idx ;
210
- err -> first_str = err -> str ;
211
- err -> str = str ;
212
- err -> first_help = err -> help ;
213
- err -> help = help ;
214
- break ;
215
- default :
216
- pr_debug ("Multiple errors dropping message: %s (%s)\n" ,
217
- err -> str , err -> help );
218
- free (err -> str );
219
- err -> str = str ;
220
- free (err -> help );
221
- err -> help = help ;
222
- break ;
223
- }
224
- err -> num_errors ++ ;
225
- }
226
-
227
194
struct tracepoint_path * tracepoint_id_to_path (u64 config )
228
195
{
229
196
struct tracepoint_path * path = NULL ;
@@ -587,7 +554,7 @@ static void tracepoint_error(struct parse_events_error *e, int err,
587
554
}
588
555
589
556
tracing_path__strerror_open_tp (err , help , sizeof (help ), sys , name );
590
- parse_events__handle_error (e , 0 , strdup (str ), strdup (help ));
557
+ parse_events_error__handle (e , 0 , strdup (str ), strdup (help ));
591
558
}
592
559
593
560
static int add_tracepoint (struct list_head * list , int * idx ,
@@ -811,7 +778,7 @@ int parse_events_load_bpf_obj(struct parse_events_state *parse_state,
811
778
812
779
return 0 ;
813
780
errout :
814
- parse_events__handle_error (parse_state -> error , 0 ,
781
+ parse_events_error__handle (parse_state -> error , 0 ,
815
782
strdup (errbuf ), strdup ("(add -v to see detail)" ));
816
783
return err ;
817
784
}
@@ -831,7 +798,7 @@ parse_events_config_bpf(struct parse_events_state *parse_state,
831
798
int err ;
832
799
833
800
if (term -> type_term != PARSE_EVENTS__TERM_TYPE_USER ) {
834
- parse_events__handle_error (parse_state -> error , term -> err_term ,
801
+ parse_events_error__handle (parse_state -> error , term -> err_term ,
835
802
strdup ("Invalid config term for BPF object" ),
836
803
NULL );
837
804
return - EINVAL ;
@@ -851,7 +818,7 @@ parse_events_config_bpf(struct parse_events_state *parse_state,
851
818
else
852
819
idx = term -> err_term + error_pos ;
853
820
854
- parse_events__handle_error (parse_state -> error , idx ,
821
+ parse_events_error__handle (parse_state -> error , idx ,
855
822
strdup (errbuf ),
856
823
strdup (
857
824
"Hint:\tValid config terms:\n"
@@ -923,7 +890,7 @@ int parse_events_load_bpf(struct parse_events_state *parse_state,
923
890
- err , errbuf ,
924
891
sizeof (errbuf ));
925
892
926
- parse_events__handle_error (parse_state -> error , 0 ,
893
+ parse_events_error__handle (parse_state -> error , 0 ,
927
894
strdup (errbuf ), strdup ("(add -v to see detail)" ));
928
895
return err ;
929
896
}
@@ -947,7 +914,7 @@ int parse_events_load_bpf_obj(struct parse_events_state *parse_state,
947
914
struct bpf_object * obj __maybe_unused ,
948
915
struct list_head * head_config __maybe_unused )
949
916
{
950
- parse_events__handle_error (parse_state -> error , 0 ,
917
+ parse_events_error__handle (parse_state -> error , 0 ,
951
918
strdup ("BPF support is not compiled" ),
952
919
strdup ("Make sure libbpf-devel is available at build time." ));
953
920
return - ENOTSUP ;
@@ -959,7 +926,7 @@ int parse_events_load_bpf(struct parse_events_state *parse_state,
959
926
bool source __maybe_unused ,
960
927
struct list_head * head_config __maybe_unused )
961
928
{
962
- parse_events__handle_error (parse_state -> error , 0 ,
929
+ parse_events_error__handle (parse_state -> error , 0 ,
963
930
strdup ("BPF support is not compiled" ),
964
931
strdup ("Make sure libbpf-devel is available at build time." ));
965
932
return - ENOTSUP ;
@@ -1042,7 +1009,7 @@ static int check_type_val(struct parse_events_term *term,
1042
1009
return 0 ;
1043
1010
1044
1011
if (err ) {
1045
- parse_events__handle_error (err , term -> err_val ,
1012
+ parse_events_error__handle (err , term -> err_val ,
1046
1013
type == PARSE_EVENTS__TERM_TYPE_NUM
1047
1014
? strdup ("expected numeric value" )
1048
1015
: strdup ("expected string value" ),
@@ -1087,7 +1054,7 @@ config_term_avail(int term_type, struct parse_events_error *err)
1087
1054
char * err_str ;
1088
1055
1089
1056
if (term_type < 0 || term_type >= __PARSE_EVENTS__TERM_TYPE_NR ) {
1090
- parse_events__handle_error (err , -1 ,
1057
+ parse_events_error__handle (err , -1 ,
1091
1058
strdup ("Invalid term_type" ), NULL );
1092
1059
return false;
1093
1060
}
@@ -1110,7 +1077,7 @@ config_term_avail(int term_type, struct parse_events_error *err)
1110
1077
/* term_type is validated so indexing is safe */
1111
1078
if (asprintf (& err_str , "'%s' is not usable in 'perf stat'" ,
1112
1079
config_term_names [term_type ]) >= 0 )
1113
- parse_events__handle_error (err , -1 , err_str , NULL );
1080
+ parse_events_error__handle (err , -1 , err_str , NULL );
1114
1081
return false;
1115
1082
}
1116
1083
}
@@ -1154,7 +1121,7 @@ do { \
1154
1121
if (strcmp (term -> val .str , "no" ) &&
1155
1122
parse_branch_str (term -> val .str ,
1156
1123
& attr -> branch_sample_type )) {
1157
- parse_events__handle_error (err , term -> err_val ,
1124
+ parse_events_error__handle (err , term -> err_val ,
1158
1125
strdup ("invalid branch sample type" ),
1159
1126
NULL );
1160
1127
return - EINVAL ;
@@ -1163,7 +1130,7 @@ do { \
1163
1130
case PARSE_EVENTS__TERM_TYPE_TIME :
1164
1131
CHECK_TYPE_VAL (NUM );
1165
1132
if (term -> val .num > 1 ) {
1166
- parse_events__handle_error (err , term -> err_val ,
1133
+ parse_events_error__handle (err , term -> err_val ,
1167
1134
strdup ("expected 0 or 1" ),
1168
1135
NULL );
1169
1136
return - EINVAL ;
@@ -1202,7 +1169,7 @@ do { \
1202
1169
case PARSE_EVENTS__TERM_TYPE_PERCORE :
1203
1170
CHECK_TYPE_VAL (NUM );
1204
1171
if ((unsigned int )term -> val .num > 1 ) {
1205
- parse_events__handle_error (err , term -> err_val ,
1172
+ parse_events_error__handle (err , term -> err_val ,
1206
1173
strdup ("expected 0 or 1" ),
1207
1174
NULL );
1208
1175
return - EINVAL ;
@@ -1214,14 +1181,14 @@ do { \
1214
1181
case PARSE_EVENTS__TERM_TYPE_AUX_SAMPLE_SIZE :
1215
1182
CHECK_TYPE_VAL (NUM );
1216
1183
if (term -> val .num > UINT_MAX ) {
1217
- parse_events__handle_error (err , term -> err_val ,
1184
+ parse_events_error__handle (err , term -> err_val ,
1218
1185
strdup ("too big" ),
1219
1186
NULL );
1220
1187
return - EINVAL ;
1221
1188
}
1222
1189
break ;
1223
1190
default :
1224
- parse_events__handle_error (err , term -> err_term ,
1191
+ parse_events_error__handle (err , term -> err_term ,
1225
1192
strdup ("unknown term" ),
1226
1193
parse_events_formats_error_string (NULL ));
1227
1194
return - EINVAL ;
@@ -1275,7 +1242,7 @@ static int config_term_tracepoint(struct perf_event_attr *attr,
1275
1242
return config_term_common (attr , term , err );
1276
1243
default :
1277
1244
if (err ) {
1278
- parse_events__handle_error (err , term -> err_term ,
1245
+ parse_events_error__handle (err , term -> err_term ,
1279
1246
strdup ("unknown term" ),
1280
1247
strdup ("valid terms: call-graph,stack-size\n" ));
1281
1248
}
@@ -1574,7 +1541,7 @@ int parse_events_add_pmu(struct parse_events_state *parse_state,
1574
1541
if (asprintf (& err_str ,
1575
1542
"Cannot find PMU `%s'. Missing kernel support?" ,
1576
1543
name ) >= 0 )
1577
- parse_events__handle_error (err , 0 , err_str , NULL );
1544
+ parse_events_error__handle (err , 0 , err_str , NULL );
1578
1545
return - EINVAL ;
1579
1546
}
1580
1547
@@ -2334,6 +2301,39 @@ int __parse_events(struct evlist *evlist, const char *str,
2334
2301
return ret ;
2335
2302
}
2336
2303
2304
+ void parse_events_error__handle (struct parse_events_error * err , int idx ,
2305
+ char * str , char * help )
2306
+ {
2307
+ if (WARN (!str , "WARNING: failed to provide error string\n" )) {
2308
+ free (help );
2309
+ return ;
2310
+ }
2311
+ switch (err -> num_errors ) {
2312
+ case 0 :
2313
+ err -> idx = idx ;
2314
+ err -> str = str ;
2315
+ err -> help = help ;
2316
+ break ;
2317
+ case 1 :
2318
+ err -> first_idx = err -> idx ;
2319
+ err -> idx = idx ;
2320
+ err -> first_str = err -> str ;
2321
+ err -> str = str ;
2322
+ err -> first_help = err -> help ;
2323
+ err -> help = help ;
2324
+ break ;
2325
+ default :
2326
+ pr_debug ("Multiple errors dropping message: %s (%s)\n" ,
2327
+ err -> str , err -> help );
2328
+ free (err -> str );
2329
+ err -> str = str ;
2330
+ free (err -> help );
2331
+ err -> help = help ;
2332
+ break ;
2333
+ }
2334
+ err -> num_errors ++ ;
2335
+ }
2336
+
2337
2337
#define MAX_WIDTH 1000
2338
2338
static int get_term_width (void )
2339
2339
{
@@ -2343,8 +2343,8 @@ static int get_term_width(void)
2343
2343
return ws .ws_col > MAX_WIDTH ? MAX_WIDTH : ws .ws_col ;
2344
2344
}
2345
2345
2346
- static void __parse_events_print_error (int err_idx , const char * err_str ,
2347
- const char * err_help , const char * event )
2346
+ static void __parse_events_error__print (int err_idx , const char * err_str ,
2347
+ const char * err_help , const char * event )
2348
2348
{
2349
2349
const char * str = "invalid or unsupported event: " ;
2350
2350
char _buf [MAX_WIDTH ];
@@ -2398,19 +2398,19 @@ static void __parse_events_print_error(int err_idx, const char *err_str,
2398
2398
}
2399
2399
}
2400
2400
2401
- void parse_events_print_error (struct parse_events_error * err ,
2402
- const char * event )
2401
+ void parse_events_error__print (struct parse_events_error * err ,
2402
+ const char * event )
2403
2403
{
2404
2404
if (!err -> num_errors )
2405
2405
return ;
2406
2406
2407
- __parse_events_print_error (err -> idx , err -> str , err -> help , event );
2407
+ __parse_events_error__print (err -> idx , err -> str , err -> help , event );
2408
2408
zfree (& err -> str );
2409
2409
zfree (& err -> help );
2410
2410
2411
2411
if (err -> num_errors > 1 ) {
2412
2412
fputs ("\nInitial error:\n" , stderr );
2413
- __parse_events_print_error (err -> first_idx , err -> first_str ,
2413
+ __parse_events_error__print (err -> first_idx , err -> first_str ,
2414
2414
err -> first_help , event );
2415
2415
zfree (& err -> first_str );
2416
2416
zfree (& err -> first_help );
@@ -2430,7 +2430,7 @@ int parse_events_option(const struct option *opt, const char *str,
2430
2430
ret = parse_events (evlist , str , & err );
2431
2431
2432
2432
if (ret ) {
2433
- parse_events_print_error (& err , str );
2433
+ parse_events_error__print (& err , str );
2434
2434
fprintf (stderr , "Run 'perf list' for a list of valid events\n" );
2435
2435
}
2436
2436
@@ -3324,7 +3324,7 @@ void parse_events_evlist_error(struct parse_events_state *parse_state,
3324
3324
if (!parse_state -> error )
3325
3325
return ;
3326
3326
3327
- parse_events__handle_error (parse_state -> error , idx , strdup (str ), NULL );
3327
+ parse_events_error__handle (parse_state -> error , idx , strdup (str ), NULL );
3328
3328
}
3329
3329
3330
3330
static void config_terms_list (char * buf , size_t buf_sz )
0 commit comments