perf tools: Rename 'struct perf_mmap' to 'struct mmap'
Rename 'struct perf_evlist' to 'struct evlist', so we don't have a name clash when we add 'struct perf_mmap' to libperf. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lore.kernel.org/lkml/20190913132355.21634-4-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
058bd85784
commit
a583053299
@ -65,7 +65,7 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe
|
|||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
u64 test_tsc, comm1_tsc, comm2_tsc;
|
u64 test_tsc, comm1_tsc, comm2_tsc;
|
||||||
u64 test_time, comm1_time = 0, comm2_time = 0;
|
u64 test_time, comm1_time = 0, comm2_time = 0;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
threads = thread_map__new(-1, getpid(), UINT_MAX);
|
threads = thread_map__new(-1, getpid(), UINT_MAX);
|
||||||
CHECK_NOT_NULL__(threads);
|
CHECK_NOT_NULL__(threads);
|
||||||
|
@ -750,7 +750,7 @@ static s64 perf_kvm__mmap_read_idx(struct perf_kvm_stat *kvm, int idx,
|
|||||||
{
|
{
|
||||||
struct evlist *evlist = kvm->evlist;
|
struct evlist *evlist = kvm->evlist;
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
u64 timestamp;
|
u64 timestamp;
|
||||||
s64 n = 0;
|
s64 n = 0;
|
||||||
int err;
|
int err;
|
||||||
|
@ -119,7 +119,7 @@ static bool switch_output_time(struct record *rec)
|
|||||||
trigger_is_ready(&switch_output_trigger);
|
trigger_is_ready(&switch_output_trigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int record__write(struct record *rec, struct perf_mmap *map __maybe_unused,
|
static int record__write(struct record *rec, struct mmap *map __maybe_unused,
|
||||||
void *bf, size_t size)
|
void *bf, size_t size)
|
||||||
{
|
{
|
||||||
struct perf_data_file *file = &rec->session->data->file;
|
struct perf_data_file *file = &rec->session->data->file;
|
||||||
@ -168,7 +168,7 @@ static int record__aio_write(struct aiocb *cblock, int trace_fd,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int record__aio_complete(struct perf_mmap *md, struct aiocb *cblock)
|
static int record__aio_complete(struct mmap *md, struct aiocb *cblock)
|
||||||
{
|
{
|
||||||
void *rem_buf;
|
void *rem_buf;
|
||||||
off_t rem_off;
|
off_t rem_off;
|
||||||
@ -214,7 +214,7 @@ static int record__aio_complete(struct perf_mmap *md, struct aiocb *cblock)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int record__aio_sync(struct perf_mmap *md, bool sync_all)
|
static int record__aio_sync(struct mmap *md, bool sync_all)
|
||||||
{
|
{
|
||||||
struct aiocb **aiocb = md->aio.aiocb;
|
struct aiocb **aiocb = md->aio.aiocb;
|
||||||
struct aiocb *cblocks = md->aio.cblocks;
|
struct aiocb *cblocks = md->aio.cblocks;
|
||||||
@ -255,7 +255,7 @@ struct record_aio {
|
|||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int record__aio_pushfn(struct perf_mmap *map, void *to, void *buf, size_t size)
|
static int record__aio_pushfn(struct mmap *map, void *to, void *buf, size_t size)
|
||||||
{
|
{
|
||||||
struct record_aio *aio = to;
|
struct record_aio *aio = to;
|
||||||
|
|
||||||
@ -300,7 +300,7 @@ static int record__aio_pushfn(struct perf_mmap *map, void *to, void *buf, size_t
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int record__aio_push(struct record *rec, struct perf_mmap *map, off_t *off)
|
static int record__aio_push(struct record *rec, struct mmap *map, off_t *off)
|
||||||
{
|
{
|
||||||
int ret, idx;
|
int ret, idx;
|
||||||
int trace_fd = rec->session->data->file.fd;
|
int trace_fd = rec->session->data->file.fd;
|
||||||
@ -351,13 +351,13 @@ static void record__aio_mmap_read_sync(struct record *rec)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct evlist *evlist = rec->evlist;
|
struct evlist *evlist = rec->evlist;
|
||||||
struct perf_mmap *maps = evlist->mmap;
|
struct mmap *maps = evlist->mmap;
|
||||||
|
|
||||||
if (!record__aio_enabled(rec))
|
if (!record__aio_enabled(rec))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
struct perf_mmap *map = &maps[i];
|
struct mmap *map = &maps[i];
|
||||||
|
|
||||||
if (map->base)
|
if (map->base)
|
||||||
record__aio_sync(map, true);
|
record__aio_sync(map, true);
|
||||||
@ -387,7 +387,7 @@ static int record__aio_parse(const struct option *opt,
|
|||||||
#else /* HAVE_AIO_SUPPORT */
|
#else /* HAVE_AIO_SUPPORT */
|
||||||
static int nr_cblocks_max = 0;
|
static int nr_cblocks_max = 0;
|
||||||
|
|
||||||
static int record__aio_push(struct record *rec __maybe_unused, struct perf_mmap *map __maybe_unused,
|
static int record__aio_push(struct record *rec __maybe_unused, struct mmap *map __maybe_unused,
|
||||||
off_t *off __maybe_unused)
|
off_t *off __maybe_unused)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
@ -482,7 +482,7 @@ static int process_synthesized_event(struct perf_tool *tool,
|
|||||||
return record__write(rec, NULL, event, event->header.size);
|
return record__write(rec, NULL, event, event->header.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int record__pushfn(struct perf_mmap *map, void *to, void *bf, size_t size)
|
static int record__pushfn(struct mmap *map, void *to, void *bf, size_t size)
|
||||||
{
|
{
|
||||||
struct record *rec = to;
|
struct record *rec = to;
|
||||||
|
|
||||||
@ -527,7 +527,7 @@ static void record__sig_exit(void)
|
|||||||
#ifdef HAVE_AUXTRACE_SUPPORT
|
#ifdef HAVE_AUXTRACE_SUPPORT
|
||||||
|
|
||||||
static int record__process_auxtrace(struct perf_tool *tool,
|
static int record__process_auxtrace(struct perf_tool *tool,
|
||||||
struct perf_mmap *map,
|
struct mmap *map,
|
||||||
union perf_event *event, void *data1,
|
union perf_event *event, void *data1,
|
||||||
size_t len1, void *data2, size_t len2)
|
size_t len1, void *data2, size_t len2)
|
||||||
{
|
{
|
||||||
@ -565,7 +565,7 @@ static int record__process_auxtrace(struct perf_tool *tool,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int record__auxtrace_mmap_read(struct record *rec,
|
static int record__auxtrace_mmap_read(struct record *rec,
|
||||||
struct perf_mmap *map)
|
struct mmap *map)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -581,7 +581,7 @@ static int record__auxtrace_mmap_read(struct record *rec,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int record__auxtrace_mmap_read_snapshot(struct record *rec,
|
static int record__auxtrace_mmap_read_snapshot(struct record *rec,
|
||||||
struct perf_mmap *map)
|
struct mmap *map)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -603,7 +603,7 @@ static int record__auxtrace_read_snapshot_all(struct record *rec)
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
for (i = 0; i < rec->evlist->nr_mmaps; i++) {
|
for (i = 0; i < rec->evlist->nr_mmaps; i++) {
|
||||||
struct perf_mmap *map = &rec->evlist->mmap[i];
|
struct mmap *map = &rec->evlist->mmap[i];
|
||||||
|
|
||||||
if (!map->auxtrace_mmap.base)
|
if (!map->auxtrace_mmap.base)
|
||||||
continue;
|
continue;
|
||||||
@ -668,7 +668,7 @@ static int record__auxtrace_init(struct record *rec)
|
|||||||
|
|
||||||
static inline
|
static inline
|
||||||
int record__auxtrace_mmap_read(struct record *rec __maybe_unused,
|
int record__auxtrace_mmap_read(struct record *rec __maybe_unused,
|
||||||
struct perf_mmap *map __maybe_unused)
|
struct mmap *map __maybe_unused)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -901,7 +901,7 @@ static struct perf_event_header finished_round_event = {
|
|||||||
.type = PERF_RECORD_FINISHED_ROUND,
|
.type = PERF_RECORD_FINISHED_ROUND,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void record__adjust_affinity(struct record *rec, struct perf_mmap *map)
|
static void record__adjust_affinity(struct record *rec, struct mmap *map)
|
||||||
{
|
{
|
||||||
if (rec->opts.affinity != PERF_AFFINITY_SYS &&
|
if (rec->opts.affinity != PERF_AFFINITY_SYS &&
|
||||||
!CPU_EQUAL(&rec->affinity_mask, &map->affinity_mask)) {
|
!CPU_EQUAL(&rec->affinity_mask, &map->affinity_mask)) {
|
||||||
@ -948,7 +948,7 @@ static int record__mmap_read_evlist(struct record *rec, struct evlist *evlist,
|
|||||||
u64 bytes_written = rec->bytes_written;
|
u64 bytes_written = rec->bytes_written;
|
||||||
int i;
|
int i;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct perf_mmap *maps;
|
struct mmap *maps;
|
||||||
int trace_fd = rec->data.file.fd;
|
int trace_fd = rec->data.file.fd;
|
||||||
off_t off = 0;
|
off_t off = 0;
|
||||||
|
|
||||||
@ -967,7 +967,7 @@ static int record__mmap_read_evlist(struct record *rec, struct evlist *evlist,
|
|||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
u64 flush = 0;
|
u64 flush = 0;
|
||||||
struct perf_mmap *map = &maps[i];
|
struct mmap *map = &maps[i];
|
||||||
|
|
||||||
if (map->base) {
|
if (map->base) {
|
||||||
record__adjust_affinity(rec, map);
|
record__adjust_affinity(rec, map);
|
||||||
|
@ -863,7 +863,7 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
|
|||||||
{
|
{
|
||||||
struct record_opts *opts = &top->record_opts;
|
struct record_opts *opts = &top->record_opts;
|
||||||
struct evlist *evlist = top->evlist;
|
struct evlist *evlist = top->evlist;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
|
|
||||||
md = opts->overwrite ? &evlist->overwrite_mmap[idx] : &evlist->mmap[idx];
|
md = opts->overwrite ? &evlist->overwrite_mmap[idx] : &evlist->mmap[idx];
|
||||||
|
@ -3444,7 +3444,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
|
|||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
md = &evlist->mmap[i];
|
md = &evlist->mmap[i];
|
||||||
if (perf_mmap__read_init(md) < 0)
|
if (perf_mmap__read_init(md) < 0)
|
||||||
|
@ -33,7 +33,7 @@ static int count_samples(struct evlist *evlist, int *sample_count,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
struct perf_mmap *map = &evlist->overwrite_mmap[i];
|
struct mmap *map = &evlist->overwrite_mmap[i];
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
|
|
||||||
perf_mmap__read_init(map);
|
perf_mmap__read_init(map);
|
||||||
|
@ -180,7 +180,7 @@ static int do_test(struct bpf_object *obj, int (*func)(void),
|
|||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
md = &evlist->mmap[i];
|
md = &evlist->mmap[i];
|
||||||
if (perf_mmap__read_init(md) < 0)
|
if (perf_mmap__read_init(md) < 0)
|
||||||
|
@ -419,7 +419,7 @@ static int process_events(struct machine *machine, struct evlist *evlist,
|
|||||||
struct state *state)
|
struct state *state)
|
||||||
{
|
{
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
static int find_comm(struct evlist *evlist, const char *comm)
|
static int find_comm(struct evlist *evlist, const char *comm)
|
||||||
{
|
{
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
int i, found;
|
int i, found;
|
||||||
|
|
||||||
found = 0;
|
found = 0;
|
||||||
|
@ -42,7 +42,7 @@ int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unuse
|
|||||||
expected_nr_events[nsyscalls], i, j;
|
expected_nr_events[nsyscalls], i, j;
|
||||||
struct evsel *evsels[nsyscalls], *evsel;
|
struct evsel *evsels[nsyscalls], *evsel;
|
||||||
char sbuf[STRERR_BUFSIZE];
|
char sbuf[STRERR_BUFSIZE];
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
threads = thread_map__new(-1, getpid(), UINT_MAX);
|
threads = thread_map__new(-1, getpid(), UINT_MAX);
|
||||||
if (threads == NULL) {
|
if (threads == NULL) {
|
||||||
|
@ -88,7 +88,7 @@ int test__syscall_openat_tp_fields(struct test *test __maybe_unused, int subtest
|
|||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
md = &evlist->mmap[i];
|
md = &evlist->mmap[i];
|
||||||
if (perf_mmap__read_init(md) < 0)
|
if (perf_mmap__read_init(md) < 0)
|
||||||
|
@ -166,7 +166,7 @@ int test__PERF_RECORD(struct test *test __maybe_unused, int subtest __maybe_unus
|
|||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
md = &evlist->mmap[i];
|
md = &evlist->mmap[i];
|
||||||
if (perf_mmap__read_init(md) < 0)
|
if (perf_mmap__read_init(md) < 0)
|
||||||
|
@ -42,7 +42,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
|
|||||||
};
|
};
|
||||||
struct perf_cpu_map *cpus;
|
struct perf_cpu_map *cpus;
|
||||||
struct perf_thread_map *threads;
|
struct perf_thread_map *threads;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
attr.sample_freq = 500;
|
attr.sample_freq = 500;
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ static int process_events(struct evlist *evlist,
|
|||||||
unsigned pos, cnt = 0;
|
unsigned pos, cnt = 0;
|
||||||
LIST_HEAD(events);
|
LIST_HEAD(events);
|
||||||
struct event_node *events_array, *node;
|
struct event_node *events_array, *node;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
|
@ -51,7 +51,7 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused
|
|||||||
char sbuf[STRERR_BUFSIZE];
|
char sbuf[STRERR_BUFSIZE];
|
||||||
struct perf_cpu_map *cpus;
|
struct perf_cpu_map *cpus;
|
||||||
struct perf_thread_map *threads;
|
struct perf_thread_map *threads;
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
|
|
||||||
signal(SIGCHLD, sig_handler);
|
signal(SIGCHLD, sig_handler);
|
||||||
|
|
||||||
|
@ -1228,7 +1228,7 @@ int perf_event__process_auxtrace_error(struct perf_session *session,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __auxtrace_mmap__read(struct perf_mmap *map,
|
static int __auxtrace_mmap__read(struct mmap *map,
|
||||||
struct auxtrace_record *itr,
|
struct auxtrace_record *itr,
|
||||||
struct perf_tool *tool, process_auxtrace_t fn,
|
struct perf_tool *tool, process_auxtrace_t fn,
|
||||||
bool snapshot, size_t snapshot_size)
|
bool snapshot, size_t snapshot_size)
|
||||||
@ -1339,13 +1339,13 @@ static int __auxtrace_mmap__read(struct perf_mmap *map,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int auxtrace_mmap__read(struct perf_mmap *map, struct auxtrace_record *itr,
|
int auxtrace_mmap__read(struct mmap *map, struct auxtrace_record *itr,
|
||||||
struct perf_tool *tool, process_auxtrace_t fn)
|
struct perf_tool *tool, process_auxtrace_t fn)
|
||||||
{
|
{
|
||||||
return __auxtrace_mmap__read(map, itr, tool, fn, false, 0);
|
return __auxtrace_mmap__read(map, itr, tool, fn, false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int auxtrace_mmap__read_snapshot(struct perf_mmap *map,
|
int auxtrace_mmap__read_snapshot(struct mmap *map,
|
||||||
struct auxtrace_record *itr,
|
struct auxtrace_record *itr,
|
||||||
struct perf_tool *tool, process_auxtrace_t fn,
|
struct perf_tool *tool, process_auxtrace_t fn,
|
||||||
size_t snapshot_size)
|
size_t snapshot_size)
|
||||||
|
@ -22,7 +22,7 @@ union perf_event;
|
|||||||
struct perf_session;
|
struct perf_session;
|
||||||
struct evlist;
|
struct evlist;
|
||||||
struct perf_tool;
|
struct perf_tool;
|
||||||
struct perf_mmap;
|
struct mmap;
|
||||||
struct perf_sample;
|
struct perf_sample;
|
||||||
struct option;
|
struct option;
|
||||||
struct record_opts;
|
struct record_opts;
|
||||||
@ -445,14 +445,14 @@ void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp,
|
|||||||
bool per_cpu);
|
bool per_cpu);
|
||||||
|
|
||||||
typedef int (*process_auxtrace_t)(struct perf_tool *tool,
|
typedef int (*process_auxtrace_t)(struct perf_tool *tool,
|
||||||
struct perf_mmap *map,
|
struct mmap *map,
|
||||||
union perf_event *event, void *data1,
|
union perf_event *event, void *data1,
|
||||||
size_t len1, void *data2, size_t len2);
|
size_t len1, void *data2, size_t len2);
|
||||||
|
|
||||||
int auxtrace_mmap__read(struct perf_mmap *map, struct auxtrace_record *itr,
|
int auxtrace_mmap__read(struct mmap *map, struct auxtrace_record *itr,
|
||||||
struct perf_tool *tool, process_auxtrace_t fn);
|
struct perf_tool *tool, process_auxtrace_t fn);
|
||||||
|
|
||||||
int auxtrace_mmap__read_snapshot(struct perf_mmap *map,
|
int auxtrace_mmap__read_snapshot(struct mmap *map,
|
||||||
struct auxtrace_record *itr,
|
struct auxtrace_record *itr,
|
||||||
struct perf_tool *tool, process_auxtrace_t fn,
|
struct perf_tool *tool, process_auxtrace_t fn,
|
||||||
size_t snapshot_size);
|
size_t snapshot_size);
|
||||||
|
@ -423,7 +423,7 @@ int perf_evlist__alloc_pollfd(struct evlist *evlist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int __perf_evlist__add_pollfd(struct evlist *evlist, int fd,
|
static int __perf_evlist__add_pollfd(struct evlist *evlist, int fd,
|
||||||
struct perf_mmap *map, short revent)
|
struct mmap *map, short revent)
|
||||||
{
|
{
|
||||||
int pos = fdarray__add(&evlist->pollfd, fd, revent | POLLERR | POLLHUP);
|
int pos = fdarray__add(&evlist->pollfd, fd, revent | POLLERR | POLLHUP);
|
||||||
/*
|
/*
|
||||||
@ -447,7 +447,7 @@ int perf_evlist__add_pollfd(struct evlist *evlist, int fd)
|
|||||||
static void perf_evlist__munmap_filtered(struct fdarray *fda, int fd,
|
static void perf_evlist__munmap_filtered(struct fdarray *fda, int fd,
|
||||||
void *arg __maybe_unused)
|
void *arg __maybe_unused)
|
||||||
{
|
{
|
||||||
struct perf_mmap *map = fda->priv[fd].ptr;
|
struct mmap *map = fda->priv[fd].ptr;
|
||||||
|
|
||||||
if (map)
|
if (map)
|
||||||
perf_mmap__put(map);
|
perf_mmap__put(map);
|
||||||
@ -693,16 +693,16 @@ void perf_evlist__munmap(struct evlist *evlist)
|
|||||||
zfree(&evlist->overwrite_mmap);
|
zfree(&evlist->overwrite_mmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct perf_mmap *perf_evlist__alloc_mmap(struct evlist *evlist,
|
static struct mmap *perf_evlist__alloc_mmap(struct evlist *evlist,
|
||||||
bool overwrite)
|
bool overwrite)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct perf_mmap *map;
|
struct mmap *map;
|
||||||
|
|
||||||
evlist->nr_mmaps = perf_cpu_map__nr(evlist->core.cpus);
|
evlist->nr_mmaps = perf_cpu_map__nr(evlist->core.cpus);
|
||||||
if (perf_cpu_map__empty(evlist->core.cpus))
|
if (perf_cpu_map__empty(evlist->core.cpus))
|
||||||
evlist->nr_mmaps = perf_thread_map__nr(evlist->core.threads);
|
evlist->nr_mmaps = perf_thread_map__nr(evlist->core.threads);
|
||||||
map = zalloc(evlist->nr_mmaps * sizeof(struct perf_mmap));
|
map = zalloc(evlist->nr_mmaps * sizeof(struct mmap));
|
||||||
if (!map)
|
if (!map)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -741,7 +741,7 @@ static int perf_evlist__mmap_per_evsel(struct evlist *evlist, int idx,
|
|||||||
int evlist_cpu = cpu_map__cpu(evlist->core.cpus, cpu_idx);
|
int evlist_cpu = cpu_map__cpu(evlist->core.cpus, cpu_idx);
|
||||||
|
|
||||||
evlist__for_each_entry(evlist, evsel) {
|
evlist__for_each_entry(evlist, evsel) {
|
||||||
struct perf_mmap *maps = evlist->mmap;
|
struct mmap *maps = evlist->mmap;
|
||||||
int *output = _output;
|
int *output = _output;
|
||||||
int fd;
|
int fd;
|
||||||
int cpu;
|
int cpu;
|
||||||
@ -1847,7 +1847,7 @@ static void *perf_evlist__poll_thread(void *arg)
|
|||||||
perf_evlist__poll(evlist, 1000);
|
perf_evlist__poll(evlist, 1000);
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
struct perf_mmap *map = &evlist->mmap[i];
|
struct mmap *map = &evlist->mmap[i];
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
|
|
||||||
if (perf_mmap__read_init(map))
|
if (perf_mmap__read_init(map))
|
||||||
|
@ -39,8 +39,8 @@ struct evlist {
|
|||||||
pid_t pid;
|
pid_t pid;
|
||||||
} workload;
|
} workload;
|
||||||
struct fdarray pollfd;
|
struct fdarray pollfd;
|
||||||
struct perf_mmap *mmap;
|
struct mmap *mmap;
|
||||||
struct perf_mmap *overwrite_mmap;
|
struct mmap *overwrite_mmap;
|
||||||
struct evsel *selected;
|
struct evsel *selected;
|
||||||
struct events_stats stats;
|
struct events_stats stats;
|
||||||
struct perf_env *env;
|
struct perf_env *env;
|
||||||
|
@ -22,13 +22,13 @@
|
|||||||
#include "../perf.h"
|
#include "../perf.h"
|
||||||
#include "util.h" /* page_size */
|
#include "util.h" /* page_size */
|
||||||
|
|
||||||
size_t perf_mmap__mmap_len(struct perf_mmap *map)
|
size_t perf_mmap__mmap_len(struct mmap *map)
|
||||||
{
|
{
|
||||||
return map->mask + 1 + page_size;
|
return map->mask + 1 + page_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* When check_messup is true, 'end' must points to a good entry */
|
/* When check_messup is true, 'end' must points to a good entry */
|
||||||
static union perf_event *perf_mmap__read(struct perf_mmap *map,
|
static union perf_event *perf_mmap__read(struct mmap *map,
|
||||||
u64 *startp, u64 end)
|
u64 *startp, u64 end)
|
||||||
{
|
{
|
||||||
unsigned char *data = map->base + page_size;
|
unsigned char *data = map->base + page_size;
|
||||||
@ -82,7 +82,7 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map,
|
|||||||
* }
|
* }
|
||||||
* perf_mmap__read_done()
|
* perf_mmap__read_done()
|
||||||
*/
|
*/
|
||||||
union perf_event *perf_mmap__read_event(struct perf_mmap *map)
|
union perf_event *perf_mmap__read_event(struct mmap *map)
|
||||||
{
|
{
|
||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
|
|
||||||
@ -104,17 +104,17 @@ union perf_event *perf_mmap__read_event(struct perf_mmap *map)
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool perf_mmap__empty(struct perf_mmap *map)
|
static bool perf_mmap__empty(struct mmap *map)
|
||||||
{
|
{
|
||||||
return perf_mmap__read_head(map) == map->prev && !map->auxtrace_mmap.base;
|
return perf_mmap__read_head(map) == map->prev && !map->auxtrace_mmap.base;
|
||||||
}
|
}
|
||||||
|
|
||||||
void perf_mmap__get(struct perf_mmap *map)
|
void perf_mmap__get(struct mmap *map)
|
||||||
{
|
{
|
||||||
refcount_inc(&map->refcnt);
|
refcount_inc(&map->refcnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void perf_mmap__put(struct perf_mmap *map)
|
void perf_mmap__put(struct mmap *map)
|
||||||
{
|
{
|
||||||
BUG_ON(map->base && refcount_read(&map->refcnt) == 0);
|
BUG_ON(map->base && refcount_read(&map->refcnt) == 0);
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ void perf_mmap__put(struct perf_mmap *map)
|
|||||||
perf_mmap__munmap(map);
|
perf_mmap__munmap(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void perf_mmap__consume(struct perf_mmap *map)
|
void perf_mmap__consume(struct mmap *map)
|
||||||
{
|
{
|
||||||
if (!map->overwrite) {
|
if (!map->overwrite) {
|
||||||
u64 old = map->prev;
|
u64 old = map->prev;
|
||||||
@ -161,13 +161,13 @@ void __weak auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp __mayb
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_AIO_SUPPORT
|
#ifdef HAVE_AIO_SUPPORT
|
||||||
static int perf_mmap__aio_enabled(struct perf_mmap *map)
|
static int perf_mmap__aio_enabled(struct mmap *map)
|
||||||
{
|
{
|
||||||
return map->aio.nr_cblocks > 0;
|
return map->aio.nr_cblocks > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBNUMA_SUPPORT
|
#ifdef HAVE_LIBNUMA_SUPPORT
|
||||||
static int perf_mmap__aio_alloc(struct perf_mmap *map, int idx)
|
static int perf_mmap__aio_alloc(struct mmap *map, int idx)
|
||||||
{
|
{
|
||||||
map->aio.data[idx] = mmap(NULL, perf_mmap__mmap_len(map), PROT_READ|PROT_WRITE,
|
map->aio.data[idx] = mmap(NULL, perf_mmap__mmap_len(map), PROT_READ|PROT_WRITE,
|
||||||
MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
|
MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
|
||||||
@ -179,7 +179,7 @@ static int perf_mmap__aio_alloc(struct perf_mmap *map, int idx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perf_mmap__aio_free(struct perf_mmap *map, int idx)
|
static void perf_mmap__aio_free(struct mmap *map, int idx)
|
||||||
{
|
{
|
||||||
if (map->aio.data[idx]) {
|
if (map->aio.data[idx]) {
|
||||||
munmap(map->aio.data[idx], perf_mmap__mmap_len(map));
|
munmap(map->aio.data[idx], perf_mmap__mmap_len(map));
|
||||||
@ -187,7 +187,7 @@ static void perf_mmap__aio_free(struct perf_mmap *map, int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int perf_mmap__aio_bind(struct perf_mmap *map, int idx, int cpu, int affinity)
|
static int perf_mmap__aio_bind(struct mmap *map, int idx, int cpu, int affinity)
|
||||||
{
|
{
|
||||||
void *data;
|
void *data;
|
||||||
size_t mmap_len;
|
size_t mmap_len;
|
||||||
@ -207,7 +207,7 @@ static int perf_mmap__aio_bind(struct perf_mmap *map, int idx, int cpu, int affi
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else /* !HAVE_LIBNUMA_SUPPORT */
|
#else /* !HAVE_LIBNUMA_SUPPORT */
|
||||||
static int perf_mmap__aio_alloc(struct perf_mmap *map, int idx)
|
static int perf_mmap__aio_alloc(struct mmap *map, int idx)
|
||||||
{
|
{
|
||||||
map->aio.data[idx] = malloc(perf_mmap__mmap_len(map));
|
map->aio.data[idx] = malloc(perf_mmap__mmap_len(map));
|
||||||
if (map->aio.data[idx] == NULL)
|
if (map->aio.data[idx] == NULL)
|
||||||
@ -216,19 +216,19 @@ static int perf_mmap__aio_alloc(struct perf_mmap *map, int idx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perf_mmap__aio_free(struct perf_mmap *map, int idx)
|
static void perf_mmap__aio_free(struct mmap *map, int idx)
|
||||||
{
|
{
|
||||||
zfree(&(map->aio.data[idx]));
|
zfree(&(map->aio.data[idx]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int perf_mmap__aio_bind(struct perf_mmap *map __maybe_unused, int idx __maybe_unused,
|
static int perf_mmap__aio_bind(struct mmap *map __maybe_unused, int idx __maybe_unused,
|
||||||
int cpu __maybe_unused, int affinity __maybe_unused)
|
int cpu __maybe_unused, int affinity __maybe_unused)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int perf_mmap__aio_mmap(struct perf_mmap *map, struct mmap_params *mp)
|
static int perf_mmap__aio_mmap(struct mmap *map, struct mmap_params *mp)
|
||||||
{
|
{
|
||||||
int delta_max, i, prio, ret;
|
int delta_max, i, prio, ret;
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ static int perf_mmap__aio_mmap(struct perf_mmap *map, struct mmap_params *mp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perf_mmap__aio_munmap(struct perf_mmap *map)
|
static void perf_mmap__aio_munmap(struct mmap *map)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -294,23 +294,23 @@ static void perf_mmap__aio_munmap(struct perf_mmap *map)
|
|||||||
zfree(&map->aio.aiocb);
|
zfree(&map->aio.aiocb);
|
||||||
}
|
}
|
||||||
#else /* !HAVE_AIO_SUPPORT */
|
#else /* !HAVE_AIO_SUPPORT */
|
||||||
static int perf_mmap__aio_enabled(struct perf_mmap *map __maybe_unused)
|
static int perf_mmap__aio_enabled(struct mmap *map __maybe_unused)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int perf_mmap__aio_mmap(struct perf_mmap *map __maybe_unused,
|
static int perf_mmap__aio_mmap(struct mmap *map __maybe_unused,
|
||||||
struct mmap_params *mp __maybe_unused)
|
struct mmap_params *mp __maybe_unused)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perf_mmap__aio_munmap(struct perf_mmap *map __maybe_unused)
|
static void perf_mmap__aio_munmap(struct mmap *map __maybe_unused)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void perf_mmap__munmap(struct perf_mmap *map)
|
void perf_mmap__munmap(struct mmap *map)
|
||||||
{
|
{
|
||||||
perf_mmap__aio_munmap(map);
|
perf_mmap__aio_munmap(map);
|
||||||
if (map->data != NULL) {
|
if (map->data != NULL) {
|
||||||
@ -343,7 +343,7 @@ static void build_node_mask(int node, cpu_set_t *mask)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void perf_mmap__setup_affinity_mask(struct perf_mmap *map, struct mmap_params *mp)
|
static void perf_mmap__setup_affinity_mask(struct mmap *map, struct mmap_params *mp)
|
||||||
{
|
{
|
||||||
CPU_ZERO(&map->affinity_mask);
|
CPU_ZERO(&map->affinity_mask);
|
||||||
if (mp->affinity == PERF_AFFINITY_NODE && cpu__max_node() > 1)
|
if (mp->affinity == PERF_AFFINITY_NODE && cpu__max_node() > 1)
|
||||||
@ -352,7 +352,7 @@ static void perf_mmap__setup_affinity_mask(struct perf_mmap *map, struct mmap_pa
|
|||||||
CPU_SET(map->cpu, &map->affinity_mask);
|
CPU_SET(map->cpu, &map->affinity_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_mmap__mmap(struct perf_mmap *map, struct mmap_params *mp, int fd, int cpu)
|
int perf_mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, int cpu)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* The last one will be done at perf_mmap__consume(), so that we
|
* The last one will be done at perf_mmap__consume(), so that we
|
||||||
@ -440,7 +440,7 @@ static int overwrite_rb_find_range(void *buf, int mask, u64 *start, u64 *end)
|
|||||||
/*
|
/*
|
||||||
* Report the start and end of the available data in ringbuffer
|
* Report the start and end of the available data in ringbuffer
|
||||||
*/
|
*/
|
||||||
static int __perf_mmap__read_init(struct perf_mmap *md)
|
static int __perf_mmap__read_init(struct mmap *md)
|
||||||
{
|
{
|
||||||
u64 head = perf_mmap__read_head(md);
|
u64 head = perf_mmap__read_head(md);
|
||||||
u64 old = md->prev;
|
u64 old = md->prev;
|
||||||
@ -474,7 +474,7 @@ static int __perf_mmap__read_init(struct perf_mmap *md)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_mmap__read_init(struct perf_mmap *map)
|
int perf_mmap__read_init(struct mmap *map)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Check if event was unmapped due to a POLLHUP/POLLERR.
|
* Check if event was unmapped due to a POLLHUP/POLLERR.
|
||||||
@ -485,8 +485,8 @@ int perf_mmap__read_init(struct perf_mmap *map)
|
|||||||
return __perf_mmap__read_init(map);
|
return __perf_mmap__read_init(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_mmap__push(struct perf_mmap *md, void *to,
|
int perf_mmap__push(struct mmap *md, void *to,
|
||||||
int push(struct perf_mmap *map, void *to, void *buf, size_t size))
|
int push(struct mmap *map, void *to, void *buf, size_t size))
|
||||||
{
|
{
|
||||||
u64 head = perf_mmap__read_head(md);
|
u64 head = perf_mmap__read_head(md);
|
||||||
unsigned char *data = md->base + page_size;
|
unsigned char *data = md->base + page_size;
|
||||||
@ -532,7 +532,7 @@ int perf_mmap__push(struct perf_mmap *md, void *to,
|
|||||||
* The last perf_mmap__read() will set tail to map->prev.
|
* The last perf_mmap__read() will set tail to map->prev.
|
||||||
* Need to correct the map->prev to head which is the end of next read.
|
* Need to correct the map->prev to head which is the end of next read.
|
||||||
*/
|
*/
|
||||||
void perf_mmap__read_done(struct perf_mmap *map)
|
void perf_mmap__read_done(struct mmap *map)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Check if event was unmapped due to a POLLHUP/POLLERR.
|
* Check if event was unmapped due to a POLLHUP/POLLERR.
|
||||||
|
@ -15,11 +15,11 @@
|
|||||||
|
|
||||||
struct aiocb;
|
struct aiocb;
|
||||||
/**
|
/**
|
||||||
* struct perf_mmap - perf's ring buffer mmap details
|
* struct mmap - perf's ring buffer mmap details
|
||||||
*
|
*
|
||||||
* @refcnt - e.g. code using PERF_EVENT_IOC_SET_OUTPUT to share this
|
* @refcnt - e.g. code using PERF_EVENT_IOC_SET_OUTPUT to share this
|
||||||
*/
|
*/
|
||||||
struct perf_mmap {
|
struct mmap {
|
||||||
void *base;
|
void *base;
|
||||||
int mask;
|
int mask;
|
||||||
int fd;
|
int fd;
|
||||||
@ -78,33 +78,33 @@ struct mmap_params {
|
|||||||
struct auxtrace_mmap_params auxtrace_mp;
|
struct auxtrace_mmap_params auxtrace_mp;
|
||||||
};
|
};
|
||||||
|
|
||||||
int perf_mmap__mmap(struct perf_mmap *map, struct mmap_params *mp, int fd, int cpu);
|
int perf_mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, int cpu);
|
||||||
void perf_mmap__munmap(struct perf_mmap *map);
|
void perf_mmap__munmap(struct mmap *map);
|
||||||
|
|
||||||
void perf_mmap__get(struct perf_mmap *map);
|
void perf_mmap__get(struct mmap *map);
|
||||||
void perf_mmap__put(struct perf_mmap *map);
|
void perf_mmap__put(struct mmap *map);
|
||||||
|
|
||||||
void perf_mmap__consume(struct perf_mmap *map);
|
void perf_mmap__consume(struct mmap *map);
|
||||||
|
|
||||||
static inline u64 perf_mmap__read_head(struct perf_mmap *mm)
|
static inline u64 perf_mmap__read_head(struct mmap *mm)
|
||||||
{
|
{
|
||||||
return ring_buffer_read_head(mm->base);
|
return ring_buffer_read_head(mm->base);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void perf_mmap__write_tail(struct perf_mmap *md, u64 tail)
|
static inline void perf_mmap__write_tail(struct mmap *md, u64 tail)
|
||||||
{
|
{
|
||||||
ring_buffer_write_tail(md->base, tail);
|
ring_buffer_write_tail(md->base, tail);
|
||||||
}
|
}
|
||||||
|
|
||||||
union perf_event *perf_mmap__read_forward(struct perf_mmap *map);
|
union perf_event *perf_mmap__read_forward(struct mmap *map);
|
||||||
|
|
||||||
union perf_event *perf_mmap__read_event(struct perf_mmap *map);
|
union perf_event *perf_mmap__read_event(struct mmap *map);
|
||||||
|
|
||||||
int perf_mmap__push(struct perf_mmap *md, void *to,
|
int perf_mmap__push(struct mmap *md, void *to,
|
||||||
int push(struct perf_mmap *map, void *to, void *buf, size_t size));
|
int push(struct mmap *map, void *to, void *buf, size_t size));
|
||||||
|
|
||||||
size_t perf_mmap__mmap_len(struct perf_mmap *map);
|
size_t perf_mmap__mmap_len(struct mmap *map);
|
||||||
|
|
||||||
int perf_mmap__read_init(struct perf_mmap *md);
|
int perf_mmap__read_init(struct mmap *md);
|
||||||
void perf_mmap__read_done(struct perf_mmap *map);
|
void perf_mmap__read_done(struct mmap *map);
|
||||||
#endif /*__PERF_MMAP_H */
|
#endif /*__PERF_MMAP_H */
|
||||||
|
@ -984,12 +984,12 @@ static PyObject *pyrf_evlist__add(struct pyrf_evlist *pevlist,
|
|||||||
return Py_BuildValue("i", evlist->core.nr_entries);
|
return Py_BuildValue("i", evlist->core.nr_entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct perf_mmap *get_md(struct evlist *evlist, int cpu)
|
static struct mmap *get_md(struct evlist *evlist, int cpu)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < evlist->nr_mmaps; i++) {
|
for (i = 0; i < evlist->nr_mmaps; i++) {
|
||||||
struct perf_mmap *md = &evlist->mmap[i];
|
struct mmap *md = &evlist->mmap[i];
|
||||||
|
|
||||||
if (md->cpu == cpu)
|
if (md->cpu == cpu)
|
||||||
return md;
|
return md;
|
||||||
@ -1005,7 +1005,7 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
|
|||||||
union perf_event *event;
|
union perf_event *event;
|
||||||
int sample_id_all = 1, cpu;
|
int sample_id_all = 1, cpu;
|
||||||
static char *kwlist[] = { "cpu", "sample_id_all", NULL };
|
static char *kwlist[] = { "cpu", "sample_id_all", NULL };
|
||||||
struct perf_mmap *md;
|
struct mmap *md;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist,
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist,
|
||||||
|
Loading…
Reference in New Issue
Block a user