Skip to content
Snippets Groups Projects
Commit 6e7c9b93 authored by Gregory Nutt's avatar Gregory Nutt
Browse files

fs/procfs: Add a tiny, primitive procfs file system. Might get more interesting in the future

parent 7de422a4
No related branches found
No related tags found
No related merge requests found
......@@ -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 */
......
#
# 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/.
\ No newline at end of file
############################################################################
# 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
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
This diff is collapsed.
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment