diff options
Diffstat (limited to 'nuttx/fs/fs_internal.h')
-rw-r--r-- | nuttx/fs/fs_internal.h | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/nuttx/fs/fs_internal.h b/nuttx/fs/fs_internal.h index 111f56aae..e63d6029f 100644 --- a/nuttx/fs/fs_internal.h +++ b/nuttx/fs/fs_internal.h @@ -1,4 +1,4 @@ -/************************************************************ +/**************************************************************************** * fs_internal.h * * Copyright (C) 2007 Gregory Nutt. All rights reserved. @@ -31,29 +31,47 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - ************************************************************/ + ****************************************************************************/ #ifndef __FS_INTERNAL_H #define __FS_INTERNAL_H -/************************************************************ +/**************************************************************************** * Included Files - ************************************************************/ + ****************************************************************************/ #include <nuttx/config.h> #include <nuttx/fs.h> #include <dirent.h> #include <nuttx/compiler.h> -/************************************************************ +/**************************************************************************** * Definitions - ************************************************************/ - -#define FSNODEFLAG_DELETED 0x00000001 - -/************************************************************ + ****************************************************************************/ + +#define FSNODEFLAG_TYPE_MASK 0x00000003 +#define FSNODEFLAG_TYPE_DRIVER 0x00000000 +#define FSNODEFLAG_TYPE_BLOCK 0x00000001 +#define FSNODEFLAG_TYPE_MOUNTPT 0x00000002 +#define FSNODEFLAG_DELETED 0x00000004 + +#define INODE_IS_DRIVER(i) \ + (((i)->i_flags & FSNODEFLAG_TYPE_MASK) == FSNODEFLAG_TYPE_DRIVER) +#define INODE_IS_BLOCK(i) \ + (((i)->i_flags & FSNODEFLAG_TYPE_BLOCK) == FSNODEFLAG_TYPE_BLOCK) +#define INODE_IS_MOUNTPT(i) \ + (((i)->i_flags & FSNODEFLAG_TYPE_MOUNTPT) == FSNODEFLAG_TYPE_MOUNTPT) + +#define INODE_SET_DRIVER(i) \ + ((i)->i_flags &= ~FSNODEFLAG_TYPE_MASK) +#define INODE_SET_BLOCK(i) \ + ((i)->i_flags = (((i)->i_flags & ~FSNODEFLAG_TYPE_MASK) | FSNODEFLAG_TYPE_BLOCK)) +#define INODE_SET_MOUNTP(i) \ + ((i)->i_flags = (((i)->i_flags & ~FSNODEFLAG_TYPE_MASK) | FSNODEFLAG_TYPE_MOUNTP)) + +/**************************************************************************** * Public Types - ************************************************************/ + ****************************************************************************/ /* The internal representation of type DIR is just a * container for an inode reference and a dirent structure. @@ -69,15 +87,15 @@ struct internal_dir_s * is called */ }; -/************************************************************ +/**************************************************************************** * Global Variables - ************************************************************/ + ****************************************************************************/ extern FAR struct inode *root_inode; -/************************************************************ +/**************************************************************************** * Pulblic Function Prototypes - ************************************************************/ + ****************************************************************************/ #undef EXTERN #if defined(__cplusplus) @@ -87,34 +105,42 @@ extern "C" { #define EXTERN extern #endif -/* fs_inode.c ***********************************************/ +/* fs_inode.c ***************************************************************/ EXTERN void inode_semtake(void); EXTERN void inode_semgive(void); EXTERN FAR struct inode *inode_search(const char **path, FAR struct inode **peer, - FAR struct inode **parent); + FAR struct inode **parent, + const char **relpath); EXTERN void inode_free(FAR struct inode *node); EXTERN const char *inode_nextname(const char *name); +/* fs_inodereserver.c ********************************************************/ + +EXTERN FAR struct inode *inode_reserve(const char *path); + +/* fs_inoderemove.c **********************************************************/ + +EXTERN STATUS inode_remove(const char *path); -/* fs_inodefind.c ********************************************/ +/* fs_inodefind.c ************************************************************/ -EXTERN FAR struct inode *inode_find(const char *path); +EXTERN FAR struct inode *inode_find(const char *path, const char **relpath); -/* fs_inodefinddir.c *****************************************/ +/* fs_inodefinddir.c *********************************************************/ EXTERN FAR struct inode *inode_finddir(const char *path); -/* fs_inodeaddref.c ******************************************/ +/* fs_inodeaddref.c **********************************************************/ EXTERN void inode_addref(FAR struct inode *inode); -/* fs_inoderelease.c *****************************************/ +/* fs_inoderelease.c *********************************************************/ EXTERN void inode_release(FAR struct inode *inode); -/* fs_files.c ***********************************************/ +/* fs_files.c ***************************************************************/ #if CONFIG_NFILE_DESCRIPTORS >0 EXTERN void weak_function files_initialize(void); |