Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07a9461d authored by Kan Liang's avatar Kan Liang Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarKan Liang <kan.liang@linux.intel.com>
Acked-by: default avatarJiri 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4fda3459
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;
		struct auxtrace_mmap *mm = &maps[i].auxtrace_mmap;


		if (maps[i].base) {
		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;
				rc = -1;
				goto out;
				goto out;
			}
			}
+12 −12
Original line number Original line Diff line number Diff line
@@ -279,8 +279,8 @@ int perf_mmap__read_init(struct perf_mmap *md, bool overwrite,
	return 0;
	return 0;
}
}


int perf_mmap__push(struct perf_mmap *md, bool overwrite,
int perf_mmap__push(struct perf_mmap *md, void *to,
		    void *to, int push(void *to, void *buf, size_t size))
		    int push(void *to, void *buf, size_t size))
{
{
	u64 head = perf_mmap__read_head(md);
	u64 head = perf_mmap__read_head(md);
	u64 end, start;
	u64 end, start;
@@ -289,16 +289,16 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
	void *buf;
	void *buf;
	int rc = 0;
	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)
	if (rc < 0)
		return (rc == -EAGAIN) ? 0 : -1;
		return (rc == -EAGAIN) ? 0 : -1;


	size = end - start;
	size = md->end - md->start;


	if ((start & md->mask) + size != (end & md->mask)) {
	if ((md->start & md->mask) + size != (md->end & md->mask)) {
		buf = &data[start & md->mask];
		buf = &data[md->start & md->mask];
		size = md->mask + 1 - (start & md->mask);
		size = md->mask + 1 - (md->start & md->mask);
		start += size;
		md->start += size;


		if (push(to, buf, size) < 0) {
		if (push(to, buf, size) < 0) {
			rc = -1;
			rc = -1;
@@ -306,9 +306,9 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
		}
		}
	}
	}


	buf = &data[start & md->mask];
	buf = &data[md->start & md->mask];
	size = end - start;
	size = md->end - md->start;
	start += size;
	md->start += size;


	if (push(to, buf, size) < 0) {
	if (push(to, buf, size) < 0) {
		rc = -1;
		rc = -1;
@@ -316,7 +316,7 @@ int perf_mmap__push(struct perf_mmap *md, bool overwrite,
	}
	}


	md->prev = head;
	md->prev = head;
	perf_mmap__consume(md, overwrite);
	perf_mmap__consume(md, md->overwrite);
out:
out:
	return rc;
	return rc;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -93,8 +93,8 @@ union perf_event *perf_mmap__read_event(struct perf_mmap *map,
					bool overwrite,
					bool overwrite,
					u64 *startp, u64 end);
					u64 *startp, u64 end);


int perf_mmap__push(struct perf_mmap *md, bool backward,
int perf_mmap__push(struct perf_mmap *md, void *to,
		    void *to, int push(void *to, void *buf, size_t size));
		    int push(void *to, void *buf, size_t size));


size_t perf_mmap__mmap_len(struct perf_mmap *map);
size_t perf_mmap__mmap_len(struct perf_mmap *map);