mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 03:43:34 +08:00
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:
+24
-22
@@ -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)
|
||||
|
||||
|
||||
@@ -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().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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, ...)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: register_driver
|
||||
* Name: register_blockdriver
|
||||
*
|
||||
* Description:
|
||||
* Register a block driver inode the pseudo file system.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user