for (i = 0; i < evlist->nr_mmaps; i++) {
                        union perf_event *event;
+                       struct perf_mmap *md;
+                       u64 end, start;
 
-                       while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) {
+                       md = &evlist->mmap[i];
+                       if (perf_mmap__read_init(md, false, &start, &end) < 0)
+                               continue;
+
+                       while ((event = perf_mmap__read_event(md, false, &start, end)) != NULL) {
                                const u32 type = event->header.type;
                                const char *name = perf_event__name(type);
 
                                        ++errs;
                                }
 
-                               perf_evlist__mmap_consume(evlist, i);
+                               perf_mmap__consume(md, false);
                        }
+                       perf_mmap__read_done(md);
                }
 
                /*