116958497SArnaldo Carvalho de Melo #ifndef __PERF_MMAP_H 216958497SArnaldo Carvalho de Melo #define __PERF_MMAP_H 1 316958497SArnaldo Carvalho de Melo 4547740f7SJiri Olsa #include <internal/mmap.h> 516958497SArnaldo Carvalho de Melo #include <linux/types.h> 65d4da30fSRiccardo Mancini #include <linux/bitops.h> 76d18804bSIan Rogers #include <perf/cpumap.h> 80b773831SAlexey Budankov #ifdef HAVE_AIO_SUPPORT 90b773831SAlexey Budankov #include <aio.h> 100b773831SAlexey Budankov #endif 1116958497SArnaldo Carvalho de Melo #include "auxtrace.h" 12*75f5f1fcSAlexey Bayduraev #include "util/compress.h" 1316958497SArnaldo Carvalho de Melo 14d3d1af6fSAlexey Budankov struct aiocb; 159c080c02SAlexey Budankov 169c080c02SAlexey Budankov struct mmap_cpu_mask { 179c080c02SAlexey Budankov unsigned long *bits; 189c080c02SAlexey Budankov size_t nbits; 199c080c02SAlexey Budankov }; 209c080c02SAlexey Budankov 219c080c02SAlexey Budankov #define MMAP_CPU_MASK_BYTES(m) \ 229c080c02SAlexey Budankov (BITS_TO_LONGS(((struct mmap_cpu_mask *)m)->nbits) * sizeof(unsigned long)) 239c080c02SAlexey Budankov 2416958497SArnaldo Carvalho de Melo /** 25a5830532SJiri Olsa * struct mmap - perf's ring buffer mmap details 2616958497SArnaldo Carvalho de Melo * 2716958497SArnaldo Carvalho de Melo * @refcnt - e.g. code using PERF_EVENT_IOC_SET_OUTPUT to share this 2816958497SArnaldo Carvalho de Melo */ 29a5830532SJiri Olsa struct mmap { 30547740f7SJiri Olsa struct perf_mmap core; 3116958497SArnaldo Carvalho de Melo struct auxtrace_mmap auxtrace_mmap; 320b773831SAlexey Budankov #ifdef HAVE_AIO_SUPPORT 330b773831SAlexey Budankov struct { 3493f20c0fSAlexey Budankov void **data; 3593f20c0fSAlexey Budankov struct aiocb *cblocks; 3693f20c0fSAlexey Budankov struct aiocb **aiocb; 37d3d1af6fSAlexey Budankov int nr_cblocks; 380b773831SAlexey Budankov } aio; 390b773831SAlexey Budankov #endif 408384a260SAlexey Budankov struct mmap_cpu_mask affinity_mask; 4151255a8aSAlexey Budankov void *data; 4251255a8aSAlexey Budankov int comp_level; 4356f735ffSAlexey Bayduraev struct perf_data_file *file; 44*75f5f1fcSAlexey Bayduraev struct zstd_data zstd_data; 4516958497SArnaldo Carvalho de Melo }; 4616958497SArnaldo Carvalho de Melo 4716958497SArnaldo Carvalho de Melo struct mmap_params { 48e440979fSJiri Olsa struct perf_mmap_param core; 49e440979fSJiri Olsa int nr_cblocks, affinity, flush, comp_level; 5016958497SArnaldo Carvalho de Melo struct auxtrace_mmap_params auxtrace_mp; 5116958497SArnaldo Carvalho de Melo }; 5216958497SArnaldo Carvalho de Melo 536d18804bSIan Rogers int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, struct perf_cpu cpu); 5459d7ea62SJiri Olsa void mmap__munmap(struct mmap *map); 5516958497SArnaldo Carvalho de Melo 56a5830532SJiri Olsa union perf_event *perf_mmap__read_forward(struct mmap *map); 5716958497SArnaldo Carvalho de Melo 58a5830532SJiri Olsa int perf_mmap__push(struct mmap *md, void *to, 59a5830532SJiri Olsa int push(struct mmap *map, void *to, void *buf, size_t size)); 6073c17d81SArnaldo Carvalho de Melo 61bf59b305SJiri Olsa size_t mmap__mmap_len(struct mmap *map); 6216958497SArnaldo Carvalho de Melo 639c080c02SAlexey Budankov void mmap_cpu_mask__scnprintf(struct mmap_cpu_mask *mask, const char *tag); 649c080c02SAlexey Budankov 656bd006c6SRiccardo Mancini int mmap_cpu_mask__duplicate(struct mmap_cpu_mask *original, 666bd006c6SRiccardo Mancini struct mmap_cpu_mask *clone); 676bd006c6SRiccardo Mancini 6816958497SArnaldo Carvalho de Melo #endif /*__PERF_MMAP_H */ 69