From c651762762dd9463aacecd703b31d81042a42473 Mon Sep 17 00:00:00 2001 From: the lemons Date: Tue, 7 Feb 2023 18:07:48 -0600 Subject: add drawing --- procfs.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'procfs.c') diff --git a/procfs.c b/procfs.c index 2558f03..1e70274 100644 --- a/procfs.c +++ b/procfs.c @@ -75,14 +75,28 @@ err: return -1; } -int read_page(int fd, uintptr_t index, uint8_t *data) { - if (lseek(fd, index * PAGE_SIZE, SEEK_SET) == -1) - return -1; +int read_mem(int fd, uintptr_t addr, uint8_t *data, size_t size) { + if (lseek(fd, addr, SEEK_SET) == -1) return -1; size_t n = 0; - while (n < PAGE_SIZE) { - ssize_t result = read(fd, data + n, PAGE_SIZE - n); + while (n < size) { + ssize_t result = read(fd, data + n, size - n); if (result == -1) return -1; n += result; } return 0; } + +int write_mem(int fd, uintptr_t addr, uint8_t *data, size_t size) { + if (lseek(fd, addr, SEEK_SET) == -1) return -1; + size_t n = 0; + while (n < size) { + ssize_t result = write(fd, data + n, size - n); + if (result == -1) return -1; + n += result; + } + return 0; +} + +int read_page(int fd, uintptr_t index, uint8_t *data) { + return read_mem(fd, index * PAGE_SIZE, data, PAGE_SIZE); +} -- cgit v1.2.3