perf mmap: Use the stored scope data in perf_mmap__push()
Using the 'start' and 'end' which are stored in struct perf_mmap to replace the temporary 'start' and 'end'. The temporary variables will be discarded later. It doesn't need to pass 'overwrite' to perf_mmap__push(). It's stored in struct perf_mmap. Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/r/1520350567-80082-3-git-send-email-kan.liang@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
4fda3459e3
Коммит
07a9461da6
|
@ -533,7 +533,7 @@ static int record__mmap_read_evlist(struct record *rec, struct perf_evlist *evli
|
|||
struct auxtrace_mmap *mm = &maps[i].auxtrace_mmap;
|
||||
|
||||
if (maps[i].base) {
|
||||
if (perf_mmap__push(&maps[i], overwrite, rec, record__pushfn) != 0) {
|
||||
if (perf_mmap__push(&maps[i], rec, record__pushfn) != 0) {
|
||||
rc = -1;
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -279,8 +279,8 @@ int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int perf_mmap__push(struct perf_mmap *md, bool overwrite,
|
||||
void *to, int push(void *to, void *buf, size_t size))
|
||||
int perf_mmap__push(struct perf_mmap *md, void *to,
|
||||
int push(void *to, void *buf, size_t size))
|
||||
{
|
||||
u64 head = perf_mmap__read_head(md);
|
||||
u64 end, start;
|
||||
|
@ -289,16 +289,16 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
|
|||
void *buf;
|
||||
int rc = 0;
|
||||
|
||||
rc = perf_mmap__read_init(md, overwrite, &start, &end);
|
||||
rc = perf_mmap__read_init(md, md->overwrite, &start, &end);
|
||||
if (rc < 0)
|
||||
return (rc == -EAGAIN) ? 0 : -1;
|
||||
|
||||
size = end - start;
|
||||
size = md->end - md->start;
|
||||
|
||||
if ((start & md->mask) + size != (end & md->mask)) {
|
||||
buf = &data[start & md->mask];
|
||||
size = md->mask + 1 - (start & md->mask);
|
||||
start += size;
|
||||
if ((md->start & md->mask) + size != (md->end & md->mask)) {
|
||||
buf = &data[md->start & md->mask];
|
||||
size = md->mask + 1 - (md->start & md->mask);
|
||||
md->start += size;
|
||||
|
||||
if (push(to, buf, size) < 0) {
|
||||
rc = -1;
|
||||
|
@ -306,9 +306,9 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
|
|||
}
|
||||
}
|
||||
|
||||
buf = &data[start & md->mask];
|
||||
size = end - start;
|
||||
start += size;
|
||||
buf = &data[md->start & md->mask];
|
||||
size = md->end - md->start;
|
||||
md->start += size;
|
||||
|
||||
if (push(to, buf, size) < 0) {
|
||||
rc = -1;
|
||||
|
@ -316,7 +316,7 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
|
|||
}
|
||||
|
||||
md->prev = head;
|
||||
perf_mmap__consume(md, overwrite);
|
||||
perf_mmap__consume(md, md->overwrite);
|
||||
out:
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -93,8 +93,8 @@ union perf_event *perf_mmap__read_event(struct perf_mmap *map,
|
|||
bool overwrite,
|
||||
u64 *startp, u64 end);
|
||||
|
||||
int perf_mmap__push(struct perf_mmap *md, bool backward,
|
||||
void *to, int push(void *to, void *buf, size_t size));
|
||||
int perf_mmap__push(struct perf_mmap *md, void *to,
|
||||
int push(void *to, void *buf, size_t size));
|
||||
|
||||
size_t perf_mmap__mmap_len(struct perf_mmap *map);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче