Re: [PATCH RFC 3/6] perf dso: Add dso__data_write_cache_addr()

From: Adrian Hunter
Date: Tue Oct 29 2019 - 05:21:52 EST


On 28/10/19 5:45 PM, Jiri Olsa wrote:
> On Fri, Oct 25, 2019 at 03:59:57PM +0300, Adrian Hunter wrote:
> SNIP
>
>>
>> -static ssize_t data_read_offset(struct dso *dso, struct machine *machine,
>> - u64 offset, u8 *data, ssize_t size)
>> +static ssize_t data_read_write_offset(struct dso *dso, struct machine *machine,
>> + u64 offset, u8 *data, ssize_t size,
>> + bool out)
>> {
>> if (dso__data_file_size(dso, machine))
>> return -1;
>> @@ -1034,7 +1037,7 @@ static ssize_t data_read_offset(struct dso *dso, struct machine *machine,
>> if (offset + size < offset)
>> return -1;
>>
>> - return cached_read(dso, machine, offset, data, size);
>> + return cached_io(dso, machine, offset, data, size, out);
>
> you renamed the function as _read_write_ so the bool choosing
> the opration should be named either read or write.. I had to
> go all the way down to find out what 'out' means ;-)
>

Arnaldo already applied it, so here is the diff:

diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
index 12ab26baba44..505ba78eda3c 100644
--- a/tools/perf/util/dso.c
+++ b/tools/perf/util/dso.c
@@ -829,12 +829,12 @@ dso_cache__insert(struct dso *dso, struct dso_cache *new)
}

static ssize_t dso_cache__memcpy(struct dso_cache *cache, u64 offset, u8 *data,
- u64 size, bool out)
+ u64 size, bool read)
{
u64 cache_offset = offset - cache->offset;
u64 cache_size = min(cache->size - cache_offset, size);

- if (out)
+ if (read)
memcpy(data, cache->data + cache_offset, cache_size);
else
memcpy(cache->data + cache_offset, data, cache_size);
@@ -912,14 +912,14 @@ static struct dso_cache *dso_cache__find(struct dso *dso,
}

static ssize_t dso_cache_io(struct dso *dso, struct machine *machine,
- u64 offset, u8 *data, ssize_t size, bool out)
+ u64 offset, u8 *data, ssize_t size, bool read)
{
struct dso_cache *cache = dso_cache__find(dso, machine, offset);

if (IS_ERR_OR_NULL(cache))
return PTR_ERR(cache);

- return dso_cache__memcpy(cache, offset, data, size, out);
+ return dso_cache__memcpy(cache, offset, data, size, read);
}

/*
@@ -928,7 +928,7 @@ static ssize_t dso_cache_io(struct dso *dso, struct machine *machine,
* by cached data. Writes update the cache only, not the backing file.
*/
static ssize_t cached_io(struct dso *dso, struct machine *machine,
- u64 offset, u8 *data, ssize_t size, bool out)
+ u64 offset, u8 *data, ssize_t size, bool read)
{
ssize_t r = 0;
u8 *p = data;
@@ -936,7 +936,7 @@ static ssize_t cached_io(struct dso *dso, struct machine *machine,
do {
ssize_t ret;

- ret = dso_cache_io(dso, machine, offset, p, size, out);
+ ret = dso_cache_io(dso, machine, offset, p, size, read);
if (ret < 0)
return ret;

@@ -1022,7 +1022,7 @@ off_t dso__data_size(struct dso *dso, struct machine *machine)

static ssize_t data_read_write_offset(struct dso *dso, struct machine *machine,
u64 offset, u8 *data, ssize_t size,
- bool out)
+ bool read)
{
if (dso__data_file_size(dso, machine))
return -1;
@@ -1034,7 +1034,7 @@ static ssize_t data_read_write_offset(struct dso *dso, struct machine *machine,
if (offset + size < offset)
return -1;

- return cached_io(dso, machine, offset, data, size, out);
+ return cached_io(dso, machine, offset, data, size, read);
}

/**