diff options
Diffstat (limited to 'tools/perf/builtin-trace.c')
| -rw-r--r-- | tools/perf/builtin-trace.c | 28 | 
1 files changed, 14 insertions, 14 deletions
| diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index d222d7fc7e9..ab3ed4af146 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -419,7 +419,7 @@ out_dump:  static int trace__run(struct trace *trace, int argc, const char **argv)  { -	struct perf_evlist *evlist = perf_evlist__new(NULL, NULL); +	struct perf_evlist *evlist = perf_evlist__new();  	struct perf_evsel *evsel;  	int err = -1, i;  	unsigned long before; @@ -452,7 +452,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)  	err = trace__symbols_init(trace, evlist);  	if (err < 0) {  		printf("Problems initializing symbol libraries!\n"); -		goto out_delete_evlist; +		goto out_delete_maps;  	}  	perf_evlist__config(evlist, &trace->opts); @@ -461,23 +461,24 @@ static int trace__run(struct trace *trace, int argc, const char **argv)  	signal(SIGINT, sig_handler);  	if (forks) { -		err = perf_evlist__prepare_workload(evlist, &trace->opts, argv); +		err = perf_evlist__prepare_workload(evlist, &trace->opts.target, +						    argv, false, false);  		if (err < 0) {  			printf("Couldn't run the workload!\n"); -			goto out_delete_evlist; +			goto out_delete_maps;  		}  	}  	err = perf_evlist__open(evlist);  	if (err < 0) {  		printf("Couldn't create the events: %s\n", strerror(errno)); -		goto out_delete_evlist; +		goto out_delete_maps;  	}  	err = perf_evlist__mmap(evlist, UINT_MAX, false);  	if (err < 0) {  		printf("Couldn't mmap the events: %s\n", strerror(errno)); -		goto out_delete_evlist; +		goto out_close_evlist;  	}  	perf_evlist__enable(evlist); @@ -526,13 +527,6 @@ again:  				continue;  			} -			if (sample.raw_data == NULL) { -				printf("%s sample with no payload for tid: %d, cpu %d, raw_size=%d, skipping...\n", -				       perf_evsel__name(evsel), sample.tid, -				       sample.cpu, sample.raw_size); -				continue; -			} -  			handler = evsel->handler.func;  			handler(trace, evsel, &sample);  		} @@ -540,7 +534,7 @@ again:  	if (trace->nr_events == before) {  		if (done) -			goto out_delete_evlist; +			goto out_unmap_evlist;  		poll(evlist->pollfd, evlist->nr_fds, -1);  	} @@ -550,6 +544,12 @@ again:  	goto again; +out_unmap_evlist: +	perf_evlist__munmap(evlist); +out_close_evlist: +	perf_evlist__close(evlist); +out_delete_maps: +	perf_evlist__delete_maps(evlist);  out_delete_evlist:  	perf_evlist__delete(evlist);  out: |