54
54
#include <unistd.h>
55
55
#include <linux/mman.h>
56
56
57
- #define PTIME_RANGE_MAX 10
58
-
59
57
struct report {
60
58
struct perf_tool tool ;
61
59
struct perf_session * session ;
@@ -76,7 +74,8 @@ struct report {
76
74
const char * cpu_list ;
77
75
const char * symbol_filter_str ;
78
76
const char * time_str ;
79
- struct perf_time_interval ptime_range [PTIME_RANGE_MAX ];
77
+ struct perf_time_interval * ptime_range ;
78
+ int range_size ;
80
79
int range_num ;
81
80
float min_percent ;
82
81
u64 nr_entries ;
@@ -1300,24 +1299,33 @@ int cmd_report(int argc, const char **argv)
1300
1299
if (symbol__init (& session -> header .env ) < 0 )
1301
1300
goto error ;
1302
1301
1302
+ report .ptime_range = perf_time__range_alloc (report .time_str ,
1303
+ & report .range_size );
1304
+ if (!report .ptime_range ) {
1305
+ ret = - ENOMEM ;
1306
+ goto error ;
1307
+ }
1308
+
1303
1309
if (perf_time__parse_str (report .ptime_range , report .time_str ) != 0 ) {
1304
1310
if (session -> evlist -> first_sample_time == 0 &&
1305
1311
session -> evlist -> last_sample_time == 0 ) {
1306
1312
pr_err ("HINT: no first/last sample time found in perf data.\n"
1307
1313
"Please use latest perf binary to execute 'perf record'\n"
1308
1314
"(if '--buildid-all' is enabled, please set '--timestamp-boundary').\n" );
1309
- return - EINVAL ;
1315
+ ret = - EINVAL ;
1316
+ goto error ;
1310
1317
}
1311
1318
1312
1319
report .range_num = perf_time__percent_parse_str (
1313
- report .ptime_range , PTIME_RANGE_MAX ,
1320
+ report .ptime_range , report . range_size ,
1314
1321
report .time_str ,
1315
1322
session -> evlist -> first_sample_time ,
1316
1323
session -> evlist -> last_sample_time );
1317
1324
1318
1325
if (report .range_num < 0 ) {
1319
1326
pr_err ("Invalid time string\n" );
1320
- return - EINVAL ;
1327
+ ret = - EINVAL ;
1328
+ goto error ;
1321
1329
}
1322
1330
} else {
1323
1331
report .range_num = 1 ;
@@ -1333,6 +1341,8 @@ int cmd_report(int argc, const char **argv)
1333
1341
ret = 0 ;
1334
1342
1335
1343
error :
1344
+ zfree (& report .ptime_range );
1345
+
1336
1346
perf_session__delete (session );
1337
1347
return ret ;
1338
1348
}
0 commit comments