Re: [PATCH v5 4/8] perf record: Introduce rec->overwrite_evlist for overwritable events

From: Wangnan (F)
Date: Wed May 25 2016 - 09:48:03 EST



On 2016/5/25 18:16, Wangnan (F) wrote:


On 2016/5/25 13:03, Wang Nan wrote:
Create an auxiliary evlist for overwritable events.

Before mmap, build this evlist and set 'overwrite' and 'backward'
attribute. Since perf_evlist__mmap_ex() only maps events when
evsel->overwrite matches evlist's corresponding attributes, with
these two evlists an event goes to either rec->evlist or
rec->overwrite_evlist.

Signed-off-by: Wang Nan <wangnan0@xxxxxxxxxx>
Cc: He Kuang <hekuang@xxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Zefan Li <lizefan@xxxxxxxxxx>
Cc: pi3orama@xxxxxxx
---
tools/perf/builtin-record.c | 138 ++++++++++++++++++++++++++++++++++++--------
1 file changed, 114 insertions(+), 24 deletions(-)


[SNIP]

@@ -941,7 +1026,10 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
err = 0;
waking++;
- if (perf_evlist__filter_pollfd(rec->evlist, POLLERR | POLLHUP) == 0)
+ active_evts = perf_evlist__filter_pollfd(rec->evlist, POLLERR | POLLHUP);
+ active_evts += perf_evlist__filter_pollfd(rec->overwrite_evlist, POLLERR | POLLHUP);

Sorry, before calling filter here should check if rec->overwrite_evlist is not NULL.
I'll resend this patch with this problem fixed soon.

Please ignore the full v5 series and see v6 instead. The final two patches
(9/10 and 10/10) in v6 solve the problem.

Thank you.