aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/kernel/filesystem/file_descriptor_table.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/kernel/filesystem/file_descriptor_table.hpp')
-rw-r--r--kernel/include/kernel/filesystem/file_descriptor_table.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/kernel/include/kernel/filesystem/file_descriptor_table.hpp b/kernel/include/kernel/filesystem/file_descriptor_table.hpp
index 91e2960..5d52c19 100644
--- a/kernel/include/kernel/filesystem/file_descriptor_table.hpp
+++ b/kernel/include/kernel/filesystem/file_descriptor_table.hpp
@@ -8,15 +8,49 @@
namespace kernel::filesystem
{
+ /**
+ @brief A table for managing file descriptors in the filesystem. This class provides methods for adding, retrieving,
+ and removing open file descriptions.
+ */
struct file_descriptor_table
{
+ /**
+ @brief Initialize the global file descriptor table. This method creates the singleton instance of the file
+ descriptor table.
+ @warning Panics if called more than once.
+ */
auto static init() -> void;
+
+ /**
+ @brief Get the global file descriptor table instance.
+ @return A reference to the global file descriptor table.
+ @warning Panics if the file descriptor table has not been initialized.
+ */
auto static get() -> file_descriptor_table &;
+ /**
+ @brief Destructor for the file descriptor table.
+ */
~file_descriptor_table() = default;
+ /**
+ @brief Add a file to the descriptor table.
+ @param f The file description to add.
+ @return The file descriptor index assigned to the file, or -1 on failure.
+ */
auto add_file(kstd::shared_ptr<open_file_description> const & f) -> int;
+
+ /**
+ @brief Get a file from the descriptor table.
+ @param fd The file descriptor index to retrieve.
+ @return A pointer to the requested file description, or a null pointer if not found.
+ */
[[nodiscard]] auto get_file(int fd) const -> kstd::shared_ptr<open_file_description>;
+
+ /**
+ @brief Remove a file from the descriptor table.
+ @param fd The file descriptor index to remove.
+ */
auto remove_file(int fd) -> void;
private: