diff options
Diffstat (limited to 'tools/perf/tests/code-reading.c')
| -rw-r--r-- | tools/perf/tests/code-reading.c | 33 | 
1 files changed, 21 insertions, 12 deletions
diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c index 6fb781d5586..67f2d632355 100644 --- a/tools/perf/tests/code-reading.c +++ b/tools/perf/tests/code-reading.c @@ -1,8 +1,7 @@ -#include <sys/types.h> +#include <linux/types.h>  #include <stdlib.h>  #include <unistd.h>  #include <stdio.h> -#include <inttypes.h>  #include <ctype.h>  #include <string.h> @@ -257,7 +256,7 @@ static int process_sample_event(struct machine *machine,  		return -1;  	} -	thread = machine__findnew_thread(machine, sample.pid, sample.pid); +	thread = machine__findnew_thread(machine, sample.pid, sample.tid);  	if (!thread) {  		pr_debug("machine__findnew_thread failed\n");  		return -1; @@ -275,8 +274,19 @@ static int process_event(struct machine *machine, struct perf_evlist *evlist,  	if (event->header.type == PERF_RECORD_SAMPLE)  		return process_sample_event(machine, evlist, event, state); -	if (event->header.type < PERF_RECORD_MAX) -		return machine__process_event(machine, event); +	if (event->header.type == PERF_RECORD_THROTTLE || +	    event->header.type == PERF_RECORD_UNTHROTTLE) +		return 0; + +	if (event->header.type < PERF_RECORD_MAX) { +		int ret; + +		ret = machine__process_event(machine, event, NULL); +		if (ret < 0) +			pr_debug("machine__process_event failed, event type %u\n", +				 event->header.type); +		return ret; +	}  	return 0;  } @@ -290,6 +300,7 @@ static int process_events(struct machine *machine, struct perf_evlist *evlist,  	for (i = 0; i < evlist->nr_mmaps; i++) {  		while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) {  			ret = process_event(machine, evlist, event, state); +			perf_evlist__mmap_consume(evlist, i);  			if (ret < 0)  				return ret;  		} @@ -379,7 +390,7 @@ static int do_test_code_reading(bool try_kcore)  	struct machines machines;  	struct machine *machine;  	struct thread *thread; -	struct perf_record_opts opts = { +	struct record_opts opts = {  		.mmap_pages	     = UINT_MAX,  		.user_freq	     = UINT_MAX,  		.user_interval	     = ULLONG_MAX, @@ -440,7 +451,7 @@ static int do_test_code_reading(bool try_kcore)  	}  	ret = perf_event__synthesize_thread_map(NULL, threads, -						perf_event__process, machine); +						perf_event__process, machine, false);  	if (ret < 0) {  		pr_debug("perf_event__synthesize_thread_map failed\n");  		goto out_err; @@ -492,6 +503,7 @@ static int do_test_code_reading(bool try_kcore)  		if (ret < 0) {  			if (!excl_kernel) {  				excl_kernel = true; +				perf_evlist__set_maps(evlist, NULL, NULL);  				perf_evlist__delete(evlist);  				evlist = NULL;  				continue; @@ -528,14 +540,11 @@ static int do_test_code_reading(bool try_kcore)  		err = TEST_CODE_READING_OK;  out_err:  	if (evlist) { -		perf_evlist__munmap(evlist); -		perf_evlist__close(evlist);  		perf_evlist__delete(evlist); -	} -	if (cpus) +	} else {  		cpu_map__delete(cpus); -	if (threads)  		thread_map__delete(threads); +	}  	machines__destroy_kernel_maps(&machines);  	machine__delete_threads(machine);  	machines__exit(&machines);  | 
