@@ -1115,6 +1115,7 @@ enum perf_ftrace_subcommand {
1115
1115
int cmd_ftrace (int argc , const char * * argv )
1116
1116
{
1117
1117
int ret ;
1118
+ int (* cmd_func )(struct perf_ftrace * ) = NULL ;
1118
1119
struct perf_ftrace ftrace = {
1119
1120
.tracer = DEFAULT_TRACER ,
1120
1121
.target = { .uid = UINT_MAX , },
@@ -1221,6 +1222,28 @@ int cmd_ftrace(int argc, const char **argv)
1221
1222
goto out_delete_filters ;
1222
1223
}
1223
1224
1225
+ switch (subcmd ) {
1226
+ case PERF_FTRACE_TRACE :
1227
+ if (!argc && target__none (& ftrace .target ))
1228
+ ftrace .target .system_wide = true;
1229
+ cmd_func = __cmd_ftrace ;
1230
+ break ;
1231
+ case PERF_FTRACE_LATENCY :
1232
+ if (list_empty (& ftrace .filters )) {
1233
+ pr_err ("Should provide a function to measure\n" );
1234
+ parse_options_usage (ftrace_usage , options , "T" , 1 );
1235
+ ret = - EINVAL ;
1236
+ goto out_delete_filters ;
1237
+ }
1238
+ cmd_func = __cmd_latency ;
1239
+ break ;
1240
+ case PERF_FTRACE_NONE :
1241
+ default :
1242
+ pr_err ("Invalid subcommand\n" );
1243
+ ret = - EINVAL ;
1244
+ goto out_delete_filters ;
1245
+ }
1246
+
1224
1247
ret = target__validate (& ftrace .target );
1225
1248
if (ret ) {
1226
1249
char errbuf [512 ];
@@ -1248,27 +1271,7 @@ int cmd_ftrace(int argc, const char **argv)
1248
1271
goto out_delete_evlist ;
1249
1272
}
1250
1273
1251
- switch (subcmd ) {
1252
- case PERF_FTRACE_TRACE :
1253
- if (!argc && target__none (& ftrace .target ))
1254
- ftrace .target .system_wide = true;
1255
- ret = __cmd_ftrace (& ftrace );
1256
- break ;
1257
- case PERF_FTRACE_LATENCY :
1258
- if (list_empty (& ftrace .filters )) {
1259
- pr_err ("Should provide a function to measure\n" );
1260
- parse_options_usage (ftrace_usage , options , "T" , 1 );
1261
- ret = - EINVAL ;
1262
- goto out_delete_evlist ;
1263
- }
1264
- ret = __cmd_latency (& ftrace );
1265
- break ;
1266
- case PERF_FTRACE_NONE :
1267
- default :
1268
- pr_err ("Invalid subcommand\n" );
1269
- ret = - EINVAL ;
1270
- break ;
1271
- }
1274
+ ret = cmd_func (& ftrace );
1272
1275
1273
1276
out_delete_evlist :
1274
1277
evlist__delete (ftrace .evlist );
0 commit comments