summaryrefslogtreecommitdiff
path: root/kernel/fs
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-11-30 17:43:25 +0100
committerAnton Kling <anton@kling.gg>2024-11-30 17:43:25 +0100
commit5dd05779ce0a6544f4653eee87d278973386d0ab (patch)
tree57658272b9047d5ac4768197529e27d51c3c45be /kernel/fs
parent1b49c460ec983eb23cace256d459b664d8a0841f (diff)
vfs: Move read() to vfs.c
Diffstat (limited to 'kernel/fs')
-rw-r--r--kernel/fs/vfs.c10
-rw-r--r--kernel/fs/vfs.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c
index 0d03dce..c06c71f 100644
--- a/kernel/fs/vfs.c
+++ b/kernel/fs/vfs.c
@@ -352,6 +352,16 @@ int vfs_pread(int fd, void *buf, u64 count, u64 offset) {
return rc;
}
+int vfs_read(int fd, void *buf, u64 count) {
+ vfs_fd_t *fd_ptr = get_vfs_fd(fd, NULL);
+ if (!fd_ptr) {
+ return -EBADF;
+ }
+ int rc = vfs_pread(fd, buf, count, fd_ptr->offset);
+ fd_ptr->offset += rc;
+ return rc;
+}
+
int raw_vfs_pwrite(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset) {
assert(vfs_fd);
assert(vfs_fd->inode);
diff --git a/kernel/fs/vfs.h b/kernel/fs/vfs.h
index af07c40..cb1c885 100644
--- a/kernel/fs/vfs.h
+++ b/kernel/fs/vfs.h
@@ -77,6 +77,7 @@ int vfs_write(int fd, const char *buf, u64 count);
int vfs_pwrite(int fd, void *buf, u64 count, u64 offset);
int raw_vfs_pwrite(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset);
int raw_vfs_pread(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset);
+int vfs_read(int fd, void *buf, u64 count);
int vfs_pread(int fd, void *buf, u64 count, u64 offset);
vfs_vm_object_t *vfs_get_vm_object(int fd, u64 length, u64 offset);
int vfs_dup(int fd);