diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 10:05:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 10:05:51 +0000 |
commit | 5d1646d90e1f2cceb9f0828f4b28318cd0ec7744 (patch) | |
tree | a94efe259b9009378be6d90eb30d2b019d95c194 /tools/perf/util/mmap.h | |
parent | Initial commit. (diff) | |
download | linux-upstream/5.10.209.tar.xz linux-upstream/5.10.209.zip |
Adding upstream version 5.10.209.upstream/5.10.209upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | tools/perf/util/mmap.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h new file mode 100644 index 000000000..9d5f589f0 --- /dev/null +++ b/tools/perf/util/mmap.h @@ -0,0 +1,66 @@ +#ifndef __PERF_MMAP_H +#define __PERF_MMAP_H 1 + +#include <internal/mmap.h> +#include <linux/compiler.h> +#include <linux/refcount.h> +#include <linux/types.h> +#include <linux/ring_buffer.h> +#include <stdbool.h> +#include <pthread.h> // for cpu_set_t +#ifdef HAVE_AIO_SUPPORT +#include <aio.h> +#endif +#include "auxtrace.h" +#include "event.h" + +struct aiocb; + +struct mmap_cpu_mask { + unsigned long *bits; + size_t nbits; +}; + +#define MMAP_CPU_MASK_BYTES(m) \ + (BITS_TO_LONGS(((struct mmap_cpu_mask *)m)->nbits) * sizeof(unsigned long)) + +/** + * struct mmap - perf's ring buffer mmap details + * + * @refcnt - e.g. code using PERF_EVENT_IOC_SET_OUTPUT to share this + */ +struct mmap { + struct perf_mmap core; + struct auxtrace_mmap auxtrace_mmap; +#ifdef HAVE_AIO_SUPPORT + struct { + void **data; + struct aiocb *cblocks; + struct aiocb **aiocb; + int nr_cblocks; + } aio; +#endif + struct mmap_cpu_mask affinity_mask; + void *data; + int comp_level; +}; + +struct mmap_params { + struct perf_mmap_param core; + int nr_cblocks, affinity, flush, comp_level; + struct auxtrace_mmap_params auxtrace_mp; +}; + +int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, int cpu); +void mmap__munmap(struct mmap *map); + +union perf_event *perf_mmap__read_forward(struct mmap *map); + +int perf_mmap__push(struct mmap *md, void *to, + int push(struct mmap *map, void *to, void *buf, size_t size)); + +size_t mmap__mmap_len(struct mmap *map); + +void mmap_cpu_mask__scnprintf(struct mmap_cpu_mask *mask, const char *tag); + +#endif /*__PERF_MMAP_H */ |