Lines Matching refs:map

39 size_t mmap__mmap_len(struct mmap *map)  in mmap__mmap_len()  argument
41 return perf_mmap__mmap_len(&map->core); in mmap__mmap_len()
71 static int perf_mmap__aio_enabled(struct mmap *map) in perf_mmap__aio_enabled() argument
73 return map->aio.nr_cblocks > 0; in perf_mmap__aio_enabled()
77 static int perf_mmap__aio_alloc(struct mmap *map, int idx) in perf_mmap__aio_alloc() argument
79 map->aio.data[idx] = mmap(NULL, mmap__mmap_len(map), PROT_READ|PROT_WRITE, in perf_mmap__aio_alloc()
81 if (map->aio.data[idx] == MAP_FAILED) { in perf_mmap__aio_alloc()
82 map->aio.data[idx] = NULL; in perf_mmap__aio_alloc()
89 static void perf_mmap__aio_free(struct mmap *map, int idx) in perf_mmap__aio_free() argument
91 if (map->aio.data[idx]) { in perf_mmap__aio_free()
92 munmap(map->aio.data[idx], mmap__mmap_len(map)); in perf_mmap__aio_free()
93 map->aio.data[idx] = NULL; in perf_mmap__aio_free()
97 static int perf_mmap__aio_bind(struct mmap *map, int idx, struct perf_cpu cpu, int affinity) in perf_mmap__aio_bind() argument
106 data = map->aio.data[idx]; in perf_mmap__aio_bind()
107 mmap_len = mmap__mmap_len(map); in perf_mmap__aio_bind()
126 static int perf_mmap__aio_alloc(struct mmap *map, int idx) in perf_mmap__aio_alloc() argument
128 map->aio.data[idx] = malloc(mmap__mmap_len(map)); in perf_mmap__aio_alloc()
129 if (map->aio.data[idx] == NULL) in perf_mmap__aio_alloc()
135 static void perf_mmap__aio_free(struct mmap *map, int idx) in perf_mmap__aio_free() argument
137 zfree(&(map->aio.data[idx])); in perf_mmap__aio_free()
140 static int perf_mmap__aio_bind(struct mmap *map __maybe_unused, int idx __maybe_unused, in perf_mmap__aio_bind()
147 static int perf_mmap__aio_mmap(struct mmap *map, struct mmap_params *mp) in perf_mmap__aio_mmap() argument
151 map->aio.nr_cblocks = mp->nr_cblocks; in perf_mmap__aio_mmap()
152 if (map->aio.nr_cblocks) { in perf_mmap__aio_mmap()
153 map->aio.aiocb = calloc(map->aio.nr_cblocks, sizeof(struct aiocb *)); in perf_mmap__aio_mmap()
154 if (!map->aio.aiocb) { in perf_mmap__aio_mmap()
158 map->aio.cblocks = calloc(map->aio.nr_cblocks, sizeof(struct aiocb)); in perf_mmap__aio_mmap()
159 if (!map->aio.cblocks) { in perf_mmap__aio_mmap()
163 map->aio.data = calloc(map->aio.nr_cblocks, sizeof(void *)); in perf_mmap__aio_mmap()
164 if (!map->aio.data) { in perf_mmap__aio_mmap()
169 for (i = 0; i < map->aio.nr_cblocks; ++i) { in perf_mmap__aio_mmap()
170 ret = perf_mmap__aio_alloc(map, i); in perf_mmap__aio_mmap()
175 ret = perf_mmap__aio_bind(map, i, map->core.cpu, mp->affinity); in perf_mmap__aio_mmap()
184 map->aio.cblocks[i].aio_fildes = -1; in perf_mmap__aio_mmap()
194 map->aio.cblocks[i].aio_reqprio = prio >= 0 ? prio : 0; in perf_mmap__aio_mmap()
201 static void perf_mmap__aio_munmap(struct mmap *map) in perf_mmap__aio_munmap() argument
205 for (i = 0; i < map->aio.nr_cblocks; ++i) in perf_mmap__aio_munmap()
206 perf_mmap__aio_free(map, i); in perf_mmap__aio_munmap()
207 if (map->aio.data) in perf_mmap__aio_munmap()
208 zfree(&map->aio.data); in perf_mmap__aio_munmap()
209 zfree(&map->aio.cblocks); in perf_mmap__aio_munmap()
210 zfree(&map->aio.aiocb); in perf_mmap__aio_munmap()
213 static int perf_mmap__aio_enabled(struct mmap *map __maybe_unused) in perf_mmap__aio_enabled()
218 static int perf_mmap__aio_mmap(struct mmap *map __maybe_unused, in perf_mmap__aio_mmap()
224 static void perf_mmap__aio_munmap(struct mmap *map __maybe_unused) in perf_mmap__aio_munmap()
229 void mmap__munmap(struct mmap *map) in mmap__munmap() argument
231 bitmap_free(map->affinity_mask.bits); in mmap__munmap()
234 zstd_fini(&map->zstd_data); in mmap__munmap()
237 perf_mmap__aio_munmap(map); in mmap__munmap()
238 if (map->data != NULL) { in mmap__munmap()
239 munmap(map->data, mmap__mmap_len(map)); in mmap__munmap()
240 map->data = NULL; in mmap__munmap()
242 auxtrace_mmap__munmap(&map->auxtrace_mmap); in mmap__munmap()
263 static int perf_mmap__setup_affinity_mask(struct mmap *map, struct mmap_params *mp) in perf_mmap__setup_affinity_mask() argument
265 map->affinity_mask.nbits = cpu__max_cpu().cpu; in perf_mmap__setup_affinity_mask()
266 map->affinity_mask.bits = bitmap_zalloc(map->affinity_mask.nbits); in perf_mmap__setup_affinity_mask()
267 if (!map->affinity_mask.bits) in perf_mmap__setup_affinity_mask()
271 build_node_mask(cpu__get_node(map->core.cpu), &map->affinity_mask); in perf_mmap__setup_affinity_mask()
273 __set_bit(map->core.cpu.cpu, map->affinity_mask.bits); in perf_mmap__setup_affinity_mask()
278 int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, struct perf_cpu cpu) in mmap__mmap() argument
280 if (perf_mmap__mmap(&map->core, &mp->core, fd, cpu)) { in mmap__mmap()
287 perf_mmap__setup_affinity_mask(map, mp)) { in mmap__mmap()
294 mmap_cpu_mask__scnprintf(&map->affinity_mask, "mmap"); in mmap__mmap()
296 map->core.flush = mp->flush; in mmap__mmap()
298 map->comp_level = mp->comp_level; in mmap__mmap()
300 if (zstd_init(&map->zstd_data, map->comp_level)) { in mmap__mmap()
306 if (map->comp_level && !perf_mmap__aio_enabled(map)) { in mmap__mmap()
307 map->data = mmap(NULL, mmap__mmap_len(map), PROT_READ|PROT_WRITE, in mmap__mmap()
309 if (map->data == MAP_FAILED) { in mmap__mmap()
312 map->data = NULL; in mmap__mmap()
317 if (auxtrace_mmap__mmap(&map->auxtrace_mmap, in mmap__mmap()
318 &mp->auxtrace_mp, map->core.base, fd)) in mmap__mmap()
321 return perf_mmap__aio_mmap(map, mp); in mmap__mmap()
325 int push(struct mmap *map, void *to, void *buf, size_t size)) in perf_mmap__push() argument