From 79f4cb3e2c6497f54b4aea598c6cb20bdd66347d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 30 Sep 2002 03:31:42 +0000 Subject: [PATCH] remove_fd() is now static. Added some comments. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1307 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/fd.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/kernel/core/fd.c b/src/kernel/core/fd.c index 5231f6eaed..fbfacf7fac 100644 --- a/src/kernel/core/fd.c +++ b/src/kernel/core/fd.c @@ -5,13 +5,15 @@ */ -//#include -#include #include -#include + +#include #include + +#include #include #include + #include #define CHECK_USER_ADDR(x) \ @@ -38,8 +40,8 @@ void dump_fd(int fd,struct file_descriptor *descriptor) { dprintf("fd[%d] = %p: type = %d, ref_count = %d, ops = %p, vnode = %p, cookie = %p, dummy = %x\n", - fd,descriptor,descriptor->type,descriptor->ref_count,descriptor->ops, - descriptor->vnode,descriptor->cookie,descriptor->dummy); + fd, descriptor, descriptor->type, descriptor->ref_count, descriptor->ops, + descriptor->vnode, descriptor->cookie, descriptor->dummy); } #endif @@ -92,13 +94,16 @@ err: } +/** Reduces the descriptor's reference counter, and frees all resources + * if necessary. + */ + void put_fd(struct file_descriptor *descriptor) { - /* Run a cleanup (fd_free) routine if there is one and free structure, but only - * if we've just removed the final reference to it :) - */ + // free the descriptor if we don't need it anymore if (atomic_add(&descriptor->ref_count, -1) == 1) { + // close the underlying object (and free any resources allocated there)= if (descriptor->ops->fd_close) descriptor->ops->fd_close(descriptor); if (descriptor->ops->fd_free) @@ -131,7 +136,11 @@ get_fd(struct io_context *context, int fd) } -void +/** Removes the file descriptor in the specified slot, and + * reduces its reference counter. + */ + +static void remove_fd(struct io_context *context, int fd) { struct file_descriptor *descriptor = NULL;