dev_mem: Fix range and pos of region
Test: fastboot oem filedump /dev/mem 0 748544 fastboot get_staged mem1.txt fastboot oem memdump 0x44000000 0xb6c00 fastboot get_staged mem2.txt diff mem1.txt mem2.txt Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
This commit is contained in:
parent
10ee7ffb46
commit
9553506b1f
1 changed files with 4 additions and 2 deletions
|
|
@ -101,11 +101,12 @@ static ssize_t devmem_read(FAR struct file *filep, FAR char *buffer,
|
|||
}
|
||||
|
||||
start = MAX(src, region[i].start);
|
||||
end = MIN(src + buflen, region[i].end);
|
||||
end = MIN(start + buflen, region[i].end);
|
||||
len = end - start;
|
||||
if (len > 0 && (region[i].flags & PROT_READ))
|
||||
{
|
||||
memcpy(buffer, (FAR const void *)start, len);
|
||||
filep->f_pos = end;
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
|
@ -137,11 +138,12 @@ static ssize_t devmem_write(FAR struct file *filep, FAR const char *buffer,
|
|||
}
|
||||
|
||||
start = MAX(dest, region[i].start);
|
||||
end = MIN(dest + buflen, region[i].end);
|
||||
end = MIN(start + buflen, region[i].end);
|
||||
len = end - start;
|
||||
if (len > 0 && (region[i].flags & PROT_WRITE))
|
||||
{
|
||||
memcpy((FAR void *)start, buffer, len);
|
||||
filep->f_pos = end;
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue