Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion components/dfs/dfs_v2/src/dfs_vnode.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
* Copyright (c) 2006-2025 RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
Expand All @@ -18,6 +18,15 @@
#define DBG_LVL DBG_WARNING
#include <rtdbg.h>

/**
* @brief Initialize a virtual node (vnode) structure
*
* @param[in,out] vnode Pointer to the vnode to be initialized
* @param[in] type Type of the vnode
* @param[in] fops Pointer to file operations structure
*
* @return int Always returns 0 indicating success
*/
int dfs_vnode_init(struct dfs_vnode *vnode, int type, const struct dfs_file_ops *fops)
{
if (vnode)
Expand All @@ -33,6 +42,11 @@ int dfs_vnode_init(struct dfs_vnode *vnode, int type, const struct dfs_file_ops
return 0;
}

/**
* @brief Create and initialize a new virtual node (vnode)
*
* @return struct dfs_vnode* Pointer to the newly created vnode, or NULL if creation failed
*/
struct dfs_vnode *dfs_vnode_create(void)
{
struct dfs_vnode *vnode = rt_calloc(1, sizeof(struct dfs_vnode));
Expand All @@ -49,6 +63,13 @@ struct dfs_vnode *dfs_vnode_create(void)
return vnode;
}

/**
* @brief Destroy a virtual node (vnode) and free its resources
*
* @param[in] vnode Pointer to the vnode to be destroyed
*
* @return int Always returns 0. Note that this does not guarantee success, as errors may occur internally.
*/
int dfs_vnode_destroy(struct dfs_vnode* vnode)
{
rt_err_t ret = RT_EOK;
Expand Down Expand Up @@ -91,6 +112,13 @@ int dfs_vnode_destroy(struct dfs_vnode* vnode)
return 0;
}

/**
* @brief Increase reference count of a virtual node (vnode)
*
* @param[in,out] vnode Pointer to the vnode to be referenced
*
* @return struct dfs_vnode* The same vnode pointer that was passed in
*/
struct dfs_vnode *dfs_vnode_ref(struct dfs_vnode *vnode)
{
if (vnode)
Expand All @@ -103,6 +131,11 @@ struct dfs_vnode *dfs_vnode_ref(struct dfs_vnode *vnode)
return vnode;
}

/**
* @brief Decrease reference count of a virtual node (vnode) and potentially free it
*
* @param[in,out] vnode Pointer to the vnode to be unreferenced
*/
void dfs_vnode_unref(struct dfs_vnode *vnode)
{
rt_err_t ret = RT_EOK;
Expand Down