diff options
| author | the lemons <citrons@mondecitronne.com> | 2023-02-07 18:07:48 -0600 |
|---|---|---|
| committer | the lemons <citrons@mondecitronne.com> | 2023-02-07 18:07:48 -0600 |
| commit | c651762762dd9463aacecd703b31d81042a42473 (patch) | |
| tree | 0418a376172a0d5c3688ec2b1f6308e1d5b9c3b8 /procfs.c | |
| parent | 4300520103c7196764561cdf7d34734495d708c0 (diff) | |
add drawing
Diffstat (limited to 'procfs.c')
| -rw-r--r-- | procfs.c | 24 |
1 files changed, 19 insertions, 5 deletions
@@ -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); +} |
