summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-08-21 11:55:38 -0400
committerIan Moffett <ian@osmora.org>2024-08-21 11:55:38 -0400
commit8f2a455cf3866857349e377cd2cf2bb898e0a494 (patch)
tree7c82932d44d2256767b0138c12d4b77470d0af82
parent546c223267b6a385030ab2c4d5211bca1420709d (diff)
kernel: Add ref count to filedesc
Keep track of how many threads are currently using the file descriptor. This will be useful when fork() is implemented. Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/include/sys/filedesc.h1
-rw-r--r--sys/kern/vfs_syscalls.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/sys/include/sys/filedesc.h b/sys/include/sys/filedesc.h
index 55f84e5..dbac349 100644
--- a/sys/include/sys/filedesc.h
+++ b/sys/include/sys/filedesc.h
@@ -38,6 +38,7 @@ struct filedesc {
int fdno;
off_t offset;
bool is_dir;
+ int refcnt;
struct vnode *vp;
struct spinlock lock;
};
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 371c1a5..937ae87 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -90,6 +90,7 @@ fd_alloc(struct filedesc **fd_out)
return -ENOMEM;
}
+ fd->refcnt = 1;
fd->fdno = i;
td->fds[i] = fd;