Add capability to traverse inodes in the NuttX psuedo-filesystem

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5004 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo
2012-08-03 19:11:11 +00:00
parent fe26494ea8
commit 07b635386d
23 changed files with 463 additions and 100 deletions
+24 -22
View File
@@ -35,10 +35,10 @@
-include $(TOPDIR)/Make.defs
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
ASRCS =
AOBJS = $(ASRCS:.S=$(OBJEXT))
CSRCS =
CSRCS =
# If there are no file descriptors configured, then a small part of the
# logic in this directory may still apply to socket descriptors
@@ -48,27 +48,28 @@ ifneq ($(CONFIG_NSOCKET_DESCRIPTORS),0)
# Socket descriptor support
CSRCS += fs_close.c fs_read.c fs_write.c fs_ioctl.c fs_poll.c fs_select.c
CSRCS += fs_close.c fs_read.c fs_write.c fs_ioctl.c fs_poll.c fs_select.c
endif
# Support for network access using streams
ifneq ($(CONFIG_NFILE_STREAMS),0)
CSRCS += fs_fdopen.c
CSRCS += fs_fdopen.c
endif
else
# Common file/socket descriptor support
CSRCS += fs_open.c fs_close.c fs_read.c fs_write.c fs_ioctl.c \
fs_poll.c fs_select.c fs_lseek.c fs_dup.c fs_filedup.c \
fs_dup2.c fs_fcntl.c fs_filedup2.c fs_opendir.c fs_closedir.c \
fs_stat.c fs_readdir.c fs_seekdir.c fs_rewinddir.c fs_files.c \
fs_inode.c fs_inodefind.c fs_inodereserve.c fs_statfs.c \
fs_inoderemove.c fs_registerdriver.c fs_unregisterdriver.c \
fs_inodeaddref.c fs_inoderelease.c
CSRCS += fs_registerblockdriver.c fs_unregisterblockdriver.c \
CSRCS += fs_close.c fs_closedir.c fs_dup.c fs_dup2.c fs_fcntl.c \
fs_filedup.c fs_filedup2.c fs_ioctl.c fs_lseek.c fs_open.c \
fs_opendir.c fs_poll.c fs_read.c fs_readdir.c fs_rewinddir.c \
fs_seekdir.c fs_stat.c fs_statfs.c fs_select.c fs_write.c
CSRCS += fs_files.c fs_foreachinode.c fs_inode.c fs_inodeaddref.c \
fs_inodefind.c fs_inoderelease.c fs_inoderemove.c \
fs_inodereserve.c
CSRCS += fs_registerdriver.c fs_unregisterdriver.c
CSRCS += fs_registerblockdriver.c fs_unregisterblockdriver.c \
fs_findblockdriver.c fs_openblockdriver.c fs_closeblockdriver.c
include mmap/Make.defs
@@ -76,22 +77,23 @@ include mmap/Make.defs
# Stream support
ifneq ($(CONFIG_NFILE_STREAMS),0)
CSRCS += fs_fdopen.c
CSRCS += fs_fdopen.c
endif
# System logging to a character device (or file)
ifeq ($(CONFIG_SYSLOG),y)
ifeq ($(CONFIG_SYSLOG_CHAR),y)
CSRCS += fs_syslog.c
CSRCS += fs_syslog.c
endif
endif
# Additional files required is mount-able file systems are supported
ifneq ($(CONFIG_DISABLE_MOUNTPOINT),y)
CSRCS += fs_mount.c fs_umount.c fs_fsync.c fs_unlink.c fs_rename.c \
fs_mkdir.c fs_rmdir.c
CSRCS += fs_fsync.c fs_mkdir.c fs_mount.c fs_rename.c fs_rmdir.c \
fs_umount.c fs_unlink.c
CSRCS += fs_foreachmountpoint.c
include fat/Make.defs
include romfs/Make.defs
include nxffs/Make.defs
@@ -99,15 +101,15 @@ include nfs/Make.defs
endif
endif
COBJS = $(CSRCS:.c=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
SRCS = $(ASRCS) $(CSRCS)
OBJS = $(AOBJS) $(COBJS)
BIN = libfs$(LIBEXT)
SUBDIRS = mmap fat romfs nxffs:nfs
VPATH = mmap:fat:romfs:nxffs:nfs
SUBDIRS = mmap fat romfs nxffs:nfs
VPATH = mmap:fat:romfs:nxffs:nfs
all: $(BIN)
+6 -5
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* fs/fs_filedup.c
*
* Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -68,10 +68,11 @@
* Name: file_dup OR dup
*
* Description:
* Clone a file descriptor to an arbitray descriptor number. If socket
* descriptors are implemented, then this is called by dup() for the case
* of file descriptors. If socket descriptors are not implemented, then
* this function IS dup().
* Clone a file descriptor 'fd' to an arbitray descriptor number (any value
* greater than or equal to 'minfd'). If socket descriptors are
* implemented, then this is called by dup() for the case of file
* descriptors. If socket descriptors are not implemented, then this
* function IS dup().
*
****************************************************************************/
+6 -6
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* fs/fs_filedup2.c
*
* Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -64,13 +64,13 @@
****************************************************************************/
/****************************************************************************
* Name: file_dup2
* Name: file_dup2 OR dup2
*
* Description:
* Clone a file descriptor or socket descriptor to a specific descriptor
* number. If socket descriptors are implemented, then this is called by
* dup2() for the case of file descriptors. If socket descriptors are not
* implemented, then this function IS dup2().
* Clone a file descriptor to a specific descriptor number. If socket
* descriptors are implemented, then this is called by dup2() for the
* case of file descriptors. If socket descriptors are not implemented,
* then this function IS dup2().
*
****************************************************************************/
+7 -4
View File
@@ -56,7 +56,7 @@
****************************************************************************/
/****************************************************************************
* Public Types
* Private Types
****************************************************************************/
/****************************************************************************
@@ -182,7 +182,8 @@ FAR struct filelist *files_alloclist(void)
/****************************************************************************
* Name: files_addreflist
*
* Description: Increase the reference count on a file list
* Description:
* Increase the reference count on a file list
*
****************************************************************************/
@@ -209,7 +210,8 @@ int files_addreflist(FAR struct filelist *list)
/****************************************************************************
* Name: files_releaselist
*
* Description: Release a reference to the file list
* Description:
* Release a reference to the file list
*
****************************************************************************/
@@ -264,7 +266,8 @@ int files_releaselist(FAR struct filelist *list)
* Name: files_dup
*
* Description:
* Assign an inode to a specific files structure. This is the heart of dup2.
* Assign an inode to a specific files structure. This is the heart of
* dup2.
*
****************************************************************************/
+9 -1
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* fs_open.c
*
* Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -58,6 +58,10 @@
/****************************************************************************
* Name: inode_checkflags
*
* Description:
* Check if the access described by 'oflags' is supported on 'inode'
*
****************************************************************************/
int inode_checkflags(FAR struct inode *inode, int oflags)
@@ -75,6 +79,10 @@ int inode_checkflags(FAR struct inode *inode, int oflags)
/****************************************************************************
* Name: open
*
* Description:
* Standard 'open' interface
*
****************************************************************************/
int open(const char *path, int oflags, ...)
+1 -1
View File
@@ -67,7 +67,7 @@
****************************************************************************/
/****************************************************************************
* Name: register_driver
* Name: register_blockdriver
*
* Description:
* Register a block driver inode the pseudo file system.
+5 -1
View File
@@ -68,7 +68,11 @@
****************************************************************************/
/****************************************************************************
* Name: unregister_blockdriver()
* Name: unregister_blockdriver
*
* Description:
* Remove the block driver inode at 'path' from the psuedo-file system
*
****************************************************************************/
int unregister_blockdriver(const char *path)
+5 -1
View File
@@ -68,7 +68,11 @@
****************************************************************************/
/****************************************************************************
* Name: unregister_driver()
* Name: unregister_driver
*
* Description:
* Remove the character driver inode at 'path' from the psuedo-file system
*
****************************************************************************/
int unregister_driver(FAR const char *path)