diff options
author | Anton Kling <anton@kling.gg> | 2024-07-01 15:29:21 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-07-01 15:29:21 +0200 |
commit | c72057ac71d5f7b4ec7175e888828053bed7e4db (patch) | |
tree | 00aa37e9364d8ed9a34d8289bb1dc27607260865 /kernel/fs/vfs.c | |
parent | e9be93974b24733f20502ce64c54b5ec749a0a3a (diff) |
VFS: Move towards unifying vfs_inode_t and vfs_fd_t
There is no need for these to be seperate. They will probably move to
the same struct soon.
Diffstat (limited to 'kernel/fs/vfs.c')
-rw-r--r-- | kernel/fs/vfs.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c index 5bbca8e..03352c4 100644 --- a/kernel/fs/vfs.c +++ b/kernel/fs/vfs.c @@ -58,14 +58,12 @@ vfs_inode_t *vfs_create_inode( r->truncate = truncate; r->stat = stat; r->send_signal = send_signal; - r->ref = 0; r->connect = connect; return r; } int vfs_create_fd(int flags, int mode, int is_tty, vfs_inode_t *inode, vfs_fd_t **fd) { - inode->ref++; vfs_fd_t *r = kmalloc(sizeof(vfs_fd_t)); r->flags = flags; r->mode = mode; @@ -301,14 +299,10 @@ int vfs_close_process(process_t *p, int fd) { assert(relist_remove(&p->file_descriptors, fd)); // If no references left then free the contents if (0 == fd_ptr->reference_count) { - assert(0 < fd_ptr->inode->ref); - fd_ptr->inode->ref--; - if (0 >= fd_ptr->inode->ref) { - if (fd_ptr->inode->close) { - fd_ptr->inode->close(fd_ptr); - } - kfree(fd_ptr->inode); + if (fd_ptr->inode->close) { + fd_ptr->inode->close(fd_ptr); } + kfree(fd_ptr->inode); kfree(fd_ptr); } return 0; |