From 8fa2af9678b9e257a1dfb1e5111f35d22366f2c6 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Fri, 22 Nov 2024 22:33:06 +0100 Subject: vfs: Add dup() --- kernel/fs/vfs.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'kernel/fs/vfs.c') diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c index 9684a18..1f28f13 100644 --- a/kernel/fs/vfs.c +++ b/kernel/fs/vfs.c @@ -395,6 +395,19 @@ vfs_vm_object_t *vfs_get_vm_object(int fd, u64 length, u64 offset) { return r; } +int vfs_dup(int fd) { + vfs_fd_t *ptr = get_vfs_fd(fd, NULL); + if (!ptr) { + return -EBADF; + } + int index; + if (!relist_add(¤t_task->file_descriptors, ptr, &index)) { + return -EMFILE; + } + ptr->reference_count++; + return index; +} + int vfs_dup2(int org_fd, int new_fd) { if (org_fd == new_fd) { return -EINVAL; -- cgit v1.2.3