fs/procfs: Add a tiny, primitive procfs file system. Might get more interesting in the future
This commit is contained in:
parent
7de422a42c
commit
6e7c9b93c6
@ -6040,3 +6040,5 @@
|
||||
apps/examples/i2schar test (2011-11-11).
|
||||
* arch/arm/src/sama5/sam_ssc.c: I2S loopback test finally works
|
||||
(2013-11-11).
|
||||
* fs/procfs: Add a little, primitive procfs file system. (2013-11-13).
|
||||
|
||||
|
@ -233,8 +233,10 @@
|
||||
| |- fs/
|
||||
| | |- mmap/
|
||||
| | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/fs/mmap/README.txt"><b><i>README.txt</i></b></a>
|
||||
| | `- nxffs/
|
||||
| | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/fs/nxffs/README.txt"><b><i>README.txt</i></b></a>
|
||||
| | |- nxffs/
|
||||
| | | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/fs/nxffs/README.txt"><b><i>README.txt</i></b></a>
|
||||
| | `- procfs/
|
||||
| | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/fs/procfs/README.txt"><b><i>README.txt</i></b></a>
|
||||
| |- graphics/
|
||||
| | `- <a href="http://sourceforge.net/p/nuttx/git/ci/master/tree/nuttx/graphics/README.txt"><b><i>README.txt</i></b></a>
|
||||
| |- lib/
|
||||
|
@ -1161,7 +1161,9 @@ nuttx
|
||||
|- fs/
|
||||
| |- mmap/
|
||||
| | `- README.txt
|
||||
| `- nxffs/
|
||||
| |- nxffs/
|
||||
| | `- README.txt
|
||||
| `- procfs/
|
||||
| `- README.txt
|
||||
|- graphics/
|
||||
| `- README.txt
|
||||
|
@ -16,6 +16,7 @@ source fs/nxffs/Kconfig
|
||||
source fs/romfs/Kconfig
|
||||
source fs/smartfs/Kconfig
|
||||
source fs/binfs/Kconfig
|
||||
source fs/procfs/Kconfig
|
||||
|
||||
comment "System Logging"
|
||||
|
||||
|
@ -111,6 +111,7 @@ include nxffs/Make.defs
|
||||
include nfs/Make.defs
|
||||
include smartfs/Make.defs
|
||||
include binfs/Make.defs
|
||||
include procfs/Make.defs
|
||||
|
||||
endif
|
||||
endif
|
||||
@ -122,7 +123,7 @@ OBJS = $(AOBJS) $(COBJS)
|
||||
|
||||
BIN = libfs$(LIBEXT)
|
||||
|
||||
SUBDIRS = mmap fat romfs nxffs nfs binfs
|
||||
SUBDIRS = mmap fat romfs nxffs nfs binfs procfs
|
||||
|
||||
all: $(BIN)
|
||||
|
||||
|
@ -63,7 +63,7 @@
|
||||
/* Configuration ************************************************************/
|
||||
/* In the canonical case, a file system is bound to a block driver. However,
|
||||
* some less typical cases a block driver is not required. Examples are
|
||||
* pseudo file systems (like BINFS) and MTD file systems (like NXFFS).
|
||||
* pseudo file systems (like BINFS or PROCFS) and MTD file systems (like NXFFS).
|
||||
*
|
||||
* These file systems all require block drivers:
|
||||
*/
|
||||
@ -74,7 +74,8 @@
|
||||
|
||||
/* These file systems do not require block drivers */
|
||||
|
||||
#if defined(CONFIG_FS_NXFFS) || defined(CONFIG_FS_BINFS) || defined(CONFIG_NFS)
|
||||
#if defined(CONFIG_FS_NXFFS) || defined(CONFIG_FS_BINFS) || \
|
||||
defined(CONFIG_FS_PROCFS) || defined(CONFIG_NFS)
|
||||
# define NONBDFS_SUPPORT
|
||||
#endif
|
||||
|
||||
@ -128,6 +129,9 @@ extern const struct mountpt_operations nfs_operations;
|
||||
#ifdef CONFIG_FS_BINFS
|
||||
extern const struct mountpt_operations binfs_operations;
|
||||
#endif
|
||||
#ifdef CONFIG_FS_PROCFS
|
||||
extern const struct mountpt_operations procfs_operations;
|
||||
#endif
|
||||
|
||||
static const struct fsmap_t g_nonbdfsmap[] =
|
||||
{
|
||||
@ -140,7 +144,10 @@ static const struct fsmap_t g_nonbdfsmap[] =
|
||||
#ifdef CONFIG_FS_BINFS
|
||||
{ "binfs", &binfs_operations },
|
||||
#endif
|
||||
{ NULL, NULL },
|
||||
#ifdef CONFIG_FS_PROCFS
|
||||
{ "procfs", &procfs_operations },
|
||||
#endif
|
||||
{ NULL, NULL },
|
||||
};
|
||||
#endif /* NONBDFS_SUPPORT */
|
||||
|
||||
|
13
fs/procfs/Kconfig
Normal file
13
fs/procfs/Kconfig
Normal file
@ -0,0 +1,13 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see misc/tools/kconfig-language.txt.
|
||||
#
|
||||
|
||||
config FS_PROCFS
|
||||
bool "PROCFS File System"
|
||||
default n
|
||||
---help---
|
||||
The PROCFS file system is provides access to task status through the
|
||||
NuttX file system. The PROCFS may, for example, be mount at /proc.
|
||||
Then information about all of the currently active tasks and threads
|
||||
will be available in proc/.
|
48
fs/procfs/Make.defs
Normal file
48
fs/procfs/Make.defs
Normal file
@ -0,0 +1,48 @@
|
||||
############################################################################
|
||||
# fs/procfs/Make.defs
|
||||
#
|
||||
# Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name Nuttx nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_FS_PROCFS),y)
|
||||
# Files required for procfs file system support
|
||||
|
||||
ASRCS +=
|
||||
CSRCS += fs_procfs.c
|
||||
|
||||
# Include procfs build support
|
||||
|
||||
DEPPATH += --dep-path procfs
|
||||
VPATH += :procfs
|
||||
CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(TOPDIR)$(DELIM)fs$(DELIM)procfs}
|
||||
|
||||
endif
|
12
fs/procfs/README.txt
Executable file
12
fs/procfs/README.txt
Executable file
@ -0,0 +1,12 @@
|
||||
fs/procfs README
|
||||
================
|
||||
|
||||
This is a tiny procfs file system that allows read-only access to a few
|
||||
attributes of a task or thread. This tiny procfs fs file system can be
|
||||
built into the system by enabling:
|
||||
|
||||
CONFIG_FS_PROCFS=y
|
||||
|
||||
It can then be mounted from the NSH command like like:
|
||||
|
||||
nsh> mount -t procfs /proc
|
1203
fs/procfs/fs_procfs.c
Normal file
1203
fs/procfs/fs_procfs.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -196,6 +196,9 @@ struct fs_dirent_s
|
||||
#ifdef CONFIG_FS_BINFS
|
||||
struct fs_binfsdir_s binfs;
|
||||
#endif
|
||||
#ifdef CONFIG_FS_PROCFS
|
||||
FAR void *procfs;
|
||||
#endif
|
||||
#ifdef CONFIG_FS_NXFFS
|
||||
struct fs_nxffsdir_s nxffs;
|
||||
#endif
|
||||
|
@ -624,6 +624,10 @@ FAR struct tcb_s *sched_self(void);
|
||||
|
||||
void sched_foreach(sched_foreach_t handler, FAR void *arg);
|
||||
|
||||
/* Give a task ID, look up the corresponding TCB */
|
||||
|
||||
FAR struct tcb_s *sched_gettcb(pid_t pid);
|
||||
|
||||
/* File system helpers **********************************************************/
|
||||
/* These functions all extract lists from the group structure assocated with the
|
||||
* currently executing task.
|
||||
|
@ -99,6 +99,7 @@
|
||||
/* NuttX specific file-systems */
|
||||
|
||||
#define BINFS_MAGIC 0x4242
|
||||
#define PROCFS_MAGIC 0x434f5250
|
||||
#define NXFFS_MAGIC 0x4747
|
||||
#define SMARTFS_MAGIC 0x54524D53
|
||||
|
||||
|
@ -258,7 +258,6 @@ int sched_reprioritize(FAR struct tcb_s *tcb, int sched_priority);
|
||||
#else
|
||||
# define sched_reprioritize(tcb,sched_priority) sched_setpriority(tcb,sched_priority)
|
||||
#endif
|
||||
FAR struct tcb_s *sched_gettcb(pid_t pid);
|
||||
bool sched_verifytcb(FAR struct tcb_s *tcb);
|
||||
|
||||
int sched_releasetcb(FAR struct tcb_s *tcb, uint8_t ttype);
|
||||
|
Loading…
Reference in New Issue
Block a user