diff options
author | Anton Kling <anton@kling.gg> | 2024-03-26 11:40:39 +0100 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-03-26 11:40:39 +0100 |
commit | 297231bb3602d868d3891d357026c53f9fcc2402 (patch) | |
tree | 6c4f21db84912750f6f464b26bf1e4503d1fe479 /kernel/fs/vfs.c | |
parent | 3deb2df8e62a5f0a5535ee734a5aa13b0959f53f (diff) |
Increase support for signals
Diffstat (limited to 'kernel/fs/vfs.c')
-rw-r--r-- | kernel/fs/vfs.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c index 143dc9d..f2b763c 100644 --- a/kernel/fs/vfs.c +++ b/kernel/fs/vfs.c @@ -292,15 +292,15 @@ int vfs_open(const char *file, int flags, int mode) { return vfs_create_fd(flags, mode, 0 /*is_tty*/, inode, NULL); } -int vfs_close(int fd) { - vfs_fd_t *fd_ptr = get_vfs_fd(fd, NULL); +int vfs_close_process(process_t *p, int fd) { + vfs_fd_t *fd_ptr = get_vfs_fd(fd, p); if (NULL == fd_ptr) { return -1; } assert(0 < fd_ptr->reference_count); // Remove process reference fd_ptr->reference_count--; - current_task->file_descriptors[fd] = 0; + p->file_descriptors[fd] = 0; // If no references left then free the contents if (0 == fd_ptr->reference_count) { if (fd_ptr->inode->close) { @@ -312,6 +312,10 @@ int vfs_close(int fd) { return 0; } +int vfs_close(int fd) { + return vfs_close_process(current_task, fd); +} + int raw_vfs_pread(vfs_fd_t *vfs_fd, void *buf, u64 count, u64 offset) { if (!(vfs_fd->flags & O_READ)) { return -EBADF; @@ -380,7 +384,7 @@ vfs_vm_object_t *vfs_get_vm_object(int fd, u64 length, u64 offset) { return NULL; } assert(vfs_fd->inode); - if(!vfs_fd->inode->get_vm_object) { + if (!vfs_fd->inode->get_vm_object) { return NULL; } vfs_vm_object_t *r = vfs_fd->inode->get_vm_object(length, offset, vfs_fd); |