Lines Matching +full:convert +full:- +full:sample +full:- +full:format

1 // SPDX-License-Identifier: GPL-2.0
21 #include "parse-events.h"
32 #include "util/synthetic-events.h"
52 struct rb_node **node = &tested_sections->rb_node; in tested_code_insert_or_exists()
61 cmp = strcmp(path, data->path); in tested_code_insert_or_exists()
63 if (addr < data->addr) in tested_code_insert_or_exists()
64 cmp = -1; in tested_code_insert_or_exists()
65 else if (addr > data->addr) in tested_code_insert_or_exists()
72 node = &(*node)->rb_left; in tested_code_insert_or_exists()
74 node = &(*node)->rb_right; in tested_code_insert_or_exists()
81 data->addr = addr; in tested_code_insert_or_exists()
82 strlcpy(data->path, path, sizeof(data->path)); in tested_code_insert_or_exists()
83 rb_link_node(&data->rb_node, parent, node); in tested_code_insert_or_exists()
84 rb_insert_color(&data->rb_node, tested_sections); in tested_code_insert_or_exists()
122 (*buf_len)--; in read_objdump_chunk()
139 unsigned char *chunk_end = chunk_start + bytes_read - 1; in read_objdump_chunk()
147 chunk_end--; in read_objdump_chunk()
200 err = -1; in read_objdump_output()
219 off = addr - start_addr; in read_objdump_output()
222 written_bytes = MIN(read_bytes, *len - off); in read_objdump_output()
228 *len -= off_last; in read_objdump_output()
236 * Only gets GNU objdump version. Returns 0 for llvm-objdump.
250 fmt = "%s --version"; in objdump_version()
253 return -1; in objdump_version()
259 return -1; in objdump_version()
261 /* Get first line of objdump --version output */ in objdump_version()
266 return -1; in objdump_version()
271 // version is last part of first line of objdump --version output. in objdump_version()
275 // Convert version into a format we can compare with in objdump_version()
308 return -1; in read_via_objdump()
319 * instructions are aligned along 2-byte intervals and in read_via_objdump()
320 * can be either 2-bytes or 4-bytes. This makes it in read_via_objdump()
321 * possible that the stop-address lands in the middle of in read_via_objdump()
322 * a 4-byte instruction. Increase the stop_address by in read_via_objdump()
324 * leave the len as-is so only the expected number of in read_via_objdump()
331 fmt = "%s -z -d --start-address=0x%"PRIx64" --stop-address=0x%"PRIx64" %s"; in read_via_objdump()
335 return -1; in read_via_objdump()
345 return -1; in read_via_objdump()
393 pr_debug("Hypervisor address can not be resolved - skipping\n"); in read_object_code()
398 err = -1; in read_object_code()
405 pr_debug("Unexpected kernel address - skipping\n"); in read_object_code()
410 * Don't retest the same addresses. objdump struggles with kcore - try in read_object_code()
416 pr_debug("Already tested %s @ %#"PRIx64" - skipping\n", in read_object_code()
428 len = map__end(al.map) - addr; in read_object_code()
445 err = -1; in read_object_code()
454 err = -1; in read_object_code()
464 err = -1; in read_object_code()
481 * The kernel maps are inaccurate - assume objdump is right in in read_object_code()
486 len -= ret; in read_object_code()
495 pr_debug(" - skipping\n"); in read_object_code()
497 err = -1; in read_object_code()
504 err = -1; in read_object_code()
515 err = -1; in read_object_code()
528 struct perf_sample sample; in process_sample_event() local
532 perf_sample__init(&sample, /*all=*/false); in process_sample_event()
533 ret = evlist__parse_sample(evlist, event, &sample); in process_sample_event()
536 ret = -1; in process_sample_event()
540 thread = machine__findnew_thread(machine, sample.pid, sample.tid); in process_sample_event()
543 ret = -1; in process_sample_event()
547 ret = read_object_code(sample.ip, READLEN, sample.cpumode, thread, in process_sample_event()
551 perf_sample__exit(&sample); in process_sample_event()
558 if (event->header.type == PERF_RECORD_SAMPLE) in process_event()
562 if (event->header.type == PERF_RECORD_THROTTLE || in process_event()
563 event->header.type == PERF_RECORD_UNTHROTTLE) in process_event()
566 if (event->header.type < PERF_RECORD_MAX) { in process_event()
572 event->header.type); in process_event()
586 for (i = 0; i < evlist->core.nr_mmaps; i++) { in process_events()
587 md = &evlist->mmap[i]; in process_events()
588 if (perf_mmap__read_init(&md->core) < 0) in process_events()
591 while ((event = perf_mmap__read_event(&md->core)) != NULL) { in process_events()
593 perf_mmap__consume(&md->core); in process_events()
597 perf_mmap__read_done(&md->core); in process_events()
604 return *(int *)a - *(int *)b; in comp()
612 buf[i] = ARRAY_SIZE(buf) - i - 1; in do_sort_something()
649 const char *test_file_name = "temp-perf-code-reading-test-file--"; in fs_something()
697 int err = -1, ret; in do_test_code_reading()
702 const char *events[] = { "cycles", "cycles:u", "cpu-clock", "cpu-clock:u", NULL }; in do_test_code_reading()
775 perf_evlist__set_maps(&evlist->core, cpus, threads); in do_test_code_reading()
788 evsel->core.attr.comm = 1; in do_test_code_reading()
789 evsel->core.attr.disabled = 1; in do_test_code_reading()
790 evsel->core.attr.enable_on_exec = 0; in do_test_code_reading()
803 perf_evlist__set_maps(&evlist->core, NULL, NULL); in do_test_code_reading()
875 return -1; in test__code_reading()