hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/tools/perf/tests/code-reading.c
....@@ -8,19 +8,30 @@
88 #include <stdio.h>
99 #include <string.h>
1010 #include <sys/param.h>
11
+#include <perf/cpumap.h>
12
+#include <perf/evlist.h>
13
+#include <perf/mmap.h>
1114
15
+#include "debug.h"
16
+#include "dso.h"
17
+#include "env.h"
1218 #include "parse-events.h"
19
+#include "trace-event.h"
1320 #include "evlist.h"
1421 #include "evsel.h"
1522 #include "thread_map.h"
16
-#include "cpumap.h"
1723 #include "machine.h"
24
+#include "map.h"
25
+#include "symbol.h"
1826 #include "event.h"
27
+#include "record.h"
28
+#include "util/mmap.h"
29
+#include "util/synthetic-events.h"
1930 #include "thread.h"
2031
2132 #include "tests.h"
2233
23
-#include "sane_ctype.h"
34
+#include <linux/ctype.h>
2435
2536 #define BUFSZ 1024
2637 #define READLEN 128
....@@ -265,7 +276,7 @@
265276 len = al.map->end - addr;
266277
267278 /* Read the object code using perf */
268
- ret_len = dso__data_read_offset(al.map->dso, thread->mg->machine,
279
+ ret_len = dso__data_read_offset(al.map->dso, thread->maps->machine,
269280 al.addr, buf1, len);
270281 if (ret_len != len) {
271282 pr_debug("dso__data_read_offset failed\n");
....@@ -360,7 +371,7 @@
360371 }
361372
362373 static int process_sample_event(struct machine *machine,
363
- struct perf_evlist *evlist,
374
+ struct evlist *evlist,
364375 union perf_event *event, struct state *state)
365376 {
366377 struct perf_sample sample;
....@@ -383,7 +394,7 @@
383394 return ret;
384395 }
385396
386
-static int process_event(struct machine *machine, struct perf_evlist *evlist,
397
+static int process_event(struct machine *machine, struct evlist *evlist,
387398 union perf_event *event, struct state *state)
388399 {
389400 if (event->header.type == PERF_RECORD_SAMPLE)
....@@ -406,25 +417,25 @@
406417 return 0;
407418 }
408419
409
-static int process_events(struct machine *machine, struct perf_evlist *evlist,
420
+static int process_events(struct machine *machine, struct evlist *evlist,
410421 struct state *state)
411422 {
412423 union perf_event *event;
413
- struct perf_mmap *md;
424
+ struct mmap *md;
414425 int i, ret;
415426
416
- for (i = 0; i < evlist->nr_mmaps; i++) {
427
+ for (i = 0; i < evlist->core.nr_mmaps; i++) {
417428 md = &evlist->mmap[i];
418
- if (perf_mmap__read_init(md) < 0)
429
+ if (perf_mmap__read_init(&md->core) < 0)
419430 continue;
420431
421
- while ((event = perf_mmap__read_event(md)) != NULL) {
432
+ while ((event = perf_mmap__read_event(&md->core)) != NULL) {
422433 ret = process_event(machine, evlist, event, state);
423
- perf_mmap__consume(md);
434
+ perf_mmap__consume(&md->core);
424435 if (ret < 0)
425436 return ret;
426437 }
427
- perf_mmap__read_done(md);
438
+ perf_mmap__read_done(&md->core);
428439 }
429440 return 0;
430441 }
....@@ -489,6 +500,10 @@
489500 }
490501 }
491502
503
+#ifdef __s390x__
504
+#include "header.h" // for get_cpuid()
505
+#endif
506
+
492507 static const char *do_determine_event(bool excl_kernel)
493508 {
494509 const char *event = excl_kernel ? "cycles:u" : "cycles";
....@@ -550,10 +565,10 @@
550565 struct state state = {
551566 .done_cnt = 0,
552567 };
553
- struct thread_map *threads = NULL;
554
- struct cpu_map *cpus = NULL;
555
- struct perf_evlist *evlist = NULL;
556
- struct perf_evsel *evsel = NULL;
568
+ struct perf_thread_map *threads = NULL;
569
+ struct perf_cpu_map *cpus = NULL;
570
+ struct evlist *evlist = NULL;
571
+ struct evsel *evsel = NULL;
557572 int err = -1, ret;
558573 pid_t pid;
559574 struct map *map;
....@@ -599,7 +614,7 @@
599614 }
600615
601616 ret = perf_event__synthesize_thread_map(NULL, threads,
602
- perf_event__process, machine, false, 500);
617
+ perf_event__process, machine, false);
603618 if (ret < 0) {
604619 pr_debug("perf_event__synthesize_thread_map failed\n");
605620 goto out_err;
....@@ -611,22 +626,22 @@
611626 goto out_put;
612627 }
613628
614
- cpus = cpu_map__new(NULL);
629
+ cpus = perf_cpu_map__new(NULL);
615630 if (!cpus) {
616
- pr_debug("cpu_map__new failed\n");
631
+ pr_debug("perf_cpu_map__new failed\n");
617632 goto out_put;
618633 }
619634
620635 while (1) {
621636 const char *str;
622637
623
- evlist = perf_evlist__new();
638
+ evlist = evlist__new();
624639 if (!evlist) {
625640 pr_debug("perf_evlist__new failed\n");
626641 goto out_put;
627642 }
628643
629
- perf_evlist__set_maps(evlist, cpus, threads);
644
+ perf_evlist__set_maps(&evlist->core, cpus, threads);
630645
631646 str = do_determine_event(excl_kernel);
632647 pr_debug("Parsing event '%s'\n", str);
....@@ -638,13 +653,13 @@
638653
639654 perf_evlist__config(evlist, &opts, NULL);
640655
641
- evsel = perf_evlist__first(evlist);
656
+ evsel = evlist__first(evlist);
642657
643
- evsel->attr.comm = 1;
644
- evsel->attr.disabled = 1;
645
- evsel->attr.enable_on_exec = 0;
658
+ evsel->core.attr.comm = 1;
659
+ evsel->core.attr.disabled = 1;
660
+ evsel->core.attr.enable_on_exec = 0;
646661
647
- ret = perf_evlist__open(evlist);
662
+ ret = evlist__open(evlist);
648663 if (ret < 0) {
649664 if (!excl_kernel) {
650665 excl_kernel = true;
....@@ -653,17 +668,17 @@
653668 * and will be freed by following perf_evlist__set_maps
654669 * call. Getting refference to keep them alive.
655670 */
656
- cpu_map__get(cpus);
657
- thread_map__get(threads);
658
- perf_evlist__set_maps(evlist, NULL, NULL);
659
- perf_evlist__delete(evlist);
671
+ perf_cpu_map__get(cpus);
672
+ perf_thread_map__get(threads);
673
+ perf_evlist__set_maps(&evlist->core, NULL, NULL);
674
+ evlist__delete(evlist);
660675 evlist = NULL;
661676 continue;
662677 }
663678
664679 if (verbose > 0) {
665680 char errbuf[512];
666
- perf_evlist__strerror_open(evlist, errno, errbuf, sizeof(errbuf));
681
+ evlist__strerror_open(evlist, errno, errbuf, sizeof(errbuf));
667682 pr_debug("perf_evlist__open() failed!\n%s\n", errbuf);
668683 }
669684
....@@ -672,17 +687,17 @@
672687 break;
673688 }
674689
675
- ret = perf_evlist__mmap(evlist, UINT_MAX);
690
+ ret = evlist__mmap(evlist, UINT_MAX);
676691 if (ret < 0) {
677
- pr_debug("perf_evlist__mmap failed\n");
692
+ pr_debug("evlist__mmap failed\n");
678693 goto out_put;
679694 }
680695
681
- perf_evlist__enable(evlist);
696
+ evlist__enable(evlist);
682697
683698 do_something();
684699
685
- perf_evlist__disable(evlist);
700
+ evlist__disable(evlist);
686701
687702 ret = process_events(machine, evlist, &state);
688703 if (ret < 0)
....@@ -701,10 +716,10 @@
701716 out_err:
702717
703718 if (evlist) {
704
- perf_evlist__delete(evlist);
719
+ evlist__delete(evlist);
705720 } else {
706
- cpu_map__put(cpus);
707
- thread_map__put(threads);
721
+ perf_cpu_map__put(cpus);
722
+ perf_thread_map__put(threads);
708723 }
709724 machine__delete_threads(machine);
710725 machine__delete(machine);