summaryrefslogtreecommitdiffstats
path: root/filesystem/in-memory.rst
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-11-09 16:54:02 +1100
committerChris Johns <chrisj@rtems.org>2016-11-09 16:54:02 +1100
commit5431beb47290b642e5b6e2b4e12b07db758c6dcd (patch)
treea4cb50ce952c191b15aa6cb3a00630b7e3f5f2de /filesystem/in-memory.rst
parentcpu-supplement: Fix the project label. (diff)
downloadrtems-docs-5431beb47290b642e5b6e2b4e12b07db758c6dcd.tar.bz2
filesystem: Fix header levels.
Diffstat (limited to 'filesystem/in-memory.rst')
-rw-r--r--filesystem/in-memory.rst1830
1 files changed, 819 insertions, 1011 deletions
diff --git a/filesystem/in-memory.rst b/filesystem/in-memory.rst
index b80d42f..937058b 100644
--- a/filesystem/in-memory.rst
+++ b/filesystem/in-memory.rst
@@ -5,7 +5,7 @@
.. COMMENT: All rights reserved.
In-Memory Filesystem
-####################
+********************
This chapter describes the In-Memory FileSystem (IMFS). The IMFS is a full
featured POSIX filesystem that keeps all information in memory.
@@ -130,6 +130,8 @@ explanation of their role in the filesystem.
Miscellaneous IMFS Information
==============================
+TBD
+
Memory associated with the IMFS
===============================
@@ -197,532 +199,474 @@ function management structure.
.. COMMENT: @page
IMFS_evalpath()
-~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
IMFS_evalformake()
-~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
IMFS_link()
-~~~~~~~~~~~
+^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``link``
-link
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_filesystem_location_info_t *to_loc, /* IN */
+ rtems_filesystem_location_info_t *parent_loc, /* IN */
+ const char *token /* IN */
-.. code-block:: c
-
- rtems_filesystem_location_info_t *to_loc, /* IN */
- rtems_filesystem_location_info_t *parent_loc, /* IN */
- const char *token /* IN */
-
-**File:**
-
-imfs_link.c
+File:
+ ``imfs_link.c``
-**Description:**
+Description:
-This routine is used in the IMFS filesystem to create a hard-link.
+ This routine is used in the IMFS filesystem to create a hard-link.
-It will first examine the st_nlink count of the node that we are trying to. If
-the link count exceeds LINK_MAX an error will be returned.
+ It will first examine the st_nlink count of the node that we are trying to.
+ If the link count exceeds LINK_MAX an error will be returned.
-The name of the link will be normalized to remove extraneous separators from
-the end of the name.
+ The name of the link will be normalized to remove extraneous separators
+ from the end of the name.
-IMFS_create_node will be used to create a filesystem node that will have the
-following characteristics:
+ IMFS_create_node will be used to create a filesystem node that will have
+ the following characteristics:
-- parent that was determined in the link() function in file link.c
+ - parent that was determined in the link() function in file link.c
-- Type will be set to IMFS_HARD_LINK
+ - Type will be set to IMFS_HARD_LINK
-- name will be set to the normalized name
+ - name will be set to the normalized name
-- mode of the hard-link will be set to the mode of the target node
+ - mode of the hard-link will be set to the mode of the target node
-If there was trouble allocating memory for the new node an error will be
-returned.
+ If there was trouble allocating memory for the new node an error will be
+ returned.
-The st_nlink count of the target node will be incremented to reflect the new
-link.
+ The st_nlink count of the target node will be incremented to reflect the
+ new link.
-The time fields of the link will be set to reflect the creation time of the
-hard-link.
+ The time fields of the link will be set to reflect the creation time of the
+ hard-link.
IMFS_unlink()
-~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
IMFS_node_type()
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``IMFS_node_type()``
-IMFS_node_type()
-
-**Arguments:**
-
-.. code-block:: c
+Arguments:
+ .. code-block:: c
- rtems_filesystem_location_info_t *pathloc /* IN */
+ rtems_filesystem_location_info_t *pathloc /* IN */
-**File:**
+File:
+ ``imfs_ntype.c``
-imfs_ntype.c
+Description:
+ This routine will locate the IMFS_jnode_t structure that holds ownership
+ information for the selected node in the filesystem.
-**Description:**
+ This structure is pointed to by pathloc->node_access.
-This routine will locate the IMFS_jnode_t structure that holds ownership
-information for the selected node in the filesystem.
+ The IMFS_jnode_t type element indicates one of the node types listed below:
-This structure is pointed to by pathloc->node_access.
+ - RTEMS_FILESYSTEM_DIRECTORY
-The IMFS_jnode_t type element indicates one of the node types listed below:
+ - RTEMS_FILESYSTEM_DEVICE
-- RTEMS_FILESYSTEM_DIRECTORY
+ - RTEMS_FILESYSTEM_HARD_LINK
-- RTEMS_FILESYSTEM_DEVICE
-
-- RTEMS_FILESYSTEM_HARD_LINK
-
-- RTEMS_FILESYSTEM_MEMORY_FILE
+ - RTEMS_FILESYSTEM_MEMORY_FILE
.. COMMENT: @page
IMFS_mknod()
-~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-IMFS_mknod()
-
-**Arguments:**
-
-.. code-block:: c
+^^^^^^^^^^^^
- const char *token, /* IN */
- mode_t mode, /* IN */
- dev_t dev, /* IN */
- rtems_filesystem_location_info_t *pathloc /* IN/OUT */
+Corresponding Structure Element:
+ ``IMFS_mknod()``
-**File:**
+Arguments:
+ .. code-block:: c
-imfs_mknod.c
+ const char *token, /* IN */
+ mode_t mode, /* IN */
+ dev_t dev, /* IN */
+ rtems_filesystem_location_info_t *pathloc /* IN/OUT */
-**Description:**
+File:
+ ``imfs_mknod.c``
-This routine will examine the mode argument to determine is we are trying to
-create a directory, regular file and a device node. The creation of other node
-types is not permitted and will cause an assert.
+Description:
+ This routine will examine the mode argument to determine is we are trying
+ to create a directory, regular file and a device node. The creation of
+ other node types is not permitted and will cause an assert.
-Memory space will be allocated for a ``jnode`` and the node will be set up
-according to the nodal type that was specified. The IMFS_create_node() function
-performs the allocation and setup of the node.
+ Memory space will be allocated for a ``jnode`` and the node will be set up
+ according to the nodal type that was specified. The IMFS_create_node()
+ function performs the allocation and setup of the node.
-The only problem that is currently reported is the lack of memory when we
-attempt to allocate space for the ``jnode`` (ENOMEN).
+ The only problem that is currently reported is the lack of memory when we
+ attempt to allocate space for the ``jnode`` (ENOMEN).
IMFS_rmnod()
-~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
IMFS_chown()
-~~~~~~~~~~~~
+^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``IMFS_chown()``
-IMFS_chown()
-
-**Arguments:**
-
-.. code-block:: c
-
- rtems_filesystem_location_info_t *pathloc /* IN */
- uid_t owner /* IN */
- gid_t group /* IN */
+Arguments:
+ .. code-block:: c
-**File:**
+ rtems_filesystem_location_info_t *pathloc /* IN */
+ uid_t owner /* IN */
+ gid_t group /* IN */
-imfs_chown.c
+File:
+ ``imfs_chown.c``
-**Description:**
+Description:
+ This routine will locate the IMFS_jnode_t structure that holds ownership
+ information for the selected node in the filesystem.
-This routine will locate the IMFS_jnode_t structure that holds ownership
-information for the selected node in the filesystem.
+ This structure is pointed to by pathloc->node_access.
-This structure is pointed to by pathloc->node_access.
-
-The st_uid and st_gid fields of the node are then modified. Since this is a
-memory based filesystem, no further action is required to alter the ownership
-of the IMFS_jnode_t structure.
+ The st_uid and st_gid fields of the node are then modified. Since this is a
+ memory based filesystem, no further action is required to alter the
+ ownership of the IMFS_jnode_t structure.
IMFS_freenod()
-~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^
-IMFS_freenod()
+Corresponding Structure Element:
+ ``IMFS_freenod()``
-**Arguments:**
+Arguments:
+ .. code-block:: c
-.. code-block:: c
+ rtems_filesystem_location_info_t *pathloc /* IN */
- rtems_filesystem_location_info_t *pathloc /* IN */
+File:
+ ``imfs_free.c``
-**File:**
+Description:
+ This method is a private function to the IMFS. It is called by IMFS
+ routines to free nodes that have been allocated. Examples of where this
+ routine may be called from are unlink and rmnod.
-imfs_free.c
-
-**Description:**
-
-This method is a private function to the IMFS. It is called by IMFS routines
-to free nodes that have been allocated. Examples of where this routine may be
-called from are unlink and rmnod.
-
-Note: This routine should not be confused with the filesystem callback freenod.
-The IMFS allocates memory until the node no longer exists.
-
-IMFS_freenodinfo()
-~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+ Note: This routine should not be confused with the filesystem callback
+ freenod. The IMFS allocates memory until the node no longer exists.
IMFS_freenodinfo()
+^^^^^^^^^^^^^^^^^^
-**Arguments:**
-
-.. code-block:: c
+Corresponding Structure Element:
+ ``IMFS_freenodinfo()``
- rtems_filesystem_location_info_t *pathloc /* IN */
+Arguments:
+ .. code-block:: c
-**File:**
+ rtems_filesystem_location_info_t *pathloc /* IN */
-imfs_free.c
+File:
+ ``imfs_free.c``
-**Description:**
-
-The In-Memory File System does not need to allocate memory during the evaluate
-routines. Therefore, this routine simply routines PASS.
-
-IMFS_mount()
-~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+Description:
+ The In-Memory File System does not need to allocate memory during the
+ evaluate routines. Therefore, this routine simply routines PASS.
IMFS_mount()
+^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ ``IMFS_mount()``
-.. code-block:: c
-
- rtems_filesystem_mount_table_entry_t *mt_entry
+Arguments:
+ .. code-block:: c
-**File:**
+ rtems_filesystem_mount_table_entry_t *mt_entry
-imfs_mount.c
+File:
+ ``imfs_mount.c``
-**Description:**
+Description:
+ This routine provides the filesystem specific processing required to mount
+ a filesystem for the system that contains the mount point. It will
+ determine if the point that we are trying to mount onto is a node of
+ IMFS_DIRECTORY type.
-This routine provides the filesystem specific processing required to mount a
-filesystem for the system that contains the mount point. It will determine if
-the point that we are trying to mount onto is a node of IMFS_DIRECTORY type.
-
-If it is the node's info element is altered so that the info.directory.mt_fs
-element points to the mount table chain entry that is associated with the
-mounted filesystem at this point. The info.directory.mt_fs element can be
-examined to determine if a filesystem is mounted at a directory. If it is NULL,
-the directory does not serve as a mount point. A non-NULL entry indicates that
-the directory does serve as a mount point and the value of info.directory.mt_fs
-can be used to locate the mount table chain entry that describes the filesystem
-mounted at this point.
+ If it is the node's info element is altered so that the
+ info.directory.mt_fs element points to the mount table chain entry that is
+ associated with the mounted filesystem at this point. The
+ info.directory.mt_fs element can be examined to determine if a filesystem
+ is mounted at a directory. If it is NULL, the directory does not serve as a
+ mount point. A non-NULL entry indicates that the directory does serve as a
+ mount point and the value of info.directory.mt_fs can be used to locate the
+ mount table chain entry that describes the filesystem mounted at this
+ point.
IMFS_fsmount_me()
-~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^
-IMFS_initialize()
+Corresponding Structure Element:
+ ``IMFS_initialize()``
-**Arguments:**
+Arguments:
+ .. code-block:: c
-.. code-block:: c
-
- rtems_filesystem_mount_table_entry_t *mt_entry
+ rtems_filesystem_mount_table_entry_t *mt_entry
-**File:**
+File:
+ ``imfs_init.c``
-imfs_init.c
+Description:
+ This function is provided with a filesystem to take care of the internal
+ filesystem management details associated with mounting that filesystem
+ under the RTEMS environment.
-**Description:**
+ It is not responsible for the mounting details associated the filesystem
+ containing the mount point.
-This function is provided with a filesystem to take care of the internal
-filesystem management details associated with mounting that filesystem under
-the RTEMS environment.
+ The rtems_filesystem_mount_table_entry_t structure contains the key
+ elements below:
-It is not responsible for the mounting details associated the filesystem
-containing the mount point.
+ .. code-block:: c
-The rtems_filesystem_mount_table_entry_t structure contains the key elements
-below:
+ rtems_filesystem_location_info_t *mt_point_node,
-.. code-block:: c
+ This structure contains information about the mount point. This allows us
+ to find the ops-table and the handling functions associated with the
+ filesystem containing the mount point.
- rtems_filesystem_location_info_t *mt_point_node,
+ .. code-block:: c
-This structure contains information about the mount point. This
-allows us to find the ops-table and the handling functions
-associated with the filesystem containing the mount point.
+ rtems_filesystem_location_info_t *fs_root_node,
-.. code-block:: c
+ This structure contains information about the root node in the file system
+ to be mounted. It allows us to find the ops-table and the handling
+ functions associated with the filesystem to be mounted.
- rtems_filesystem_location_info_t *fs_root_node,
+ .. code-block:: c
-This structure contains information about the root node in the file
-system to be mounted. It allows us to find the ops-table and the
-handling functions associated with the filesystem to be mounted.
+ rtems_filesystem_options_t options,
-.. code-block:: c
+ Read only or read/write access
- rtems_filesystem_options_t options,
+ .. code-block:: c
-Read only or read/write access
+ void *fs_info,
-.. code-block:: c
+ This points to an allocated block of memory the will be used to hold any
+ filesystem specific information of a global nature. This allocated region
+ if important because it allows us to mount the same filesystem type more
+ than once under the RTEMS system. Each instance of the mounted filesystem
+ has its own set of global management information that is separate from the
+ global management information associated with the other instances of the
+ mounted filesystem type.
- void *fs_info,
+ .. code-block:: c
-This points to an allocated block of memory the will be used to hold any
-filesystem specific information of a global nature. This allocated region if
-important because it allows us to mount the same filesystem type more than once
-under the RTEMS system. Each instance of the mounted filesystem has its own
-set of global management information that is separate from the global
-management information associated with the other instances of the mounted
-filesystem type.
+ rtems_filesystem_limits_and_options_t pathconf_info,
-.. code-block:: c
+ The table contains the following set of values associated with the mounted
+ filesystem:
- rtems_filesystem_limits_and_options_t pathconf_info,
+ - link_max
-The table contains the following set of values associated with the mounted
-filesystem:
+ - max_canon
-- link_max
+ - max_input
-- max_canon
+ - name_max
-- max_input
+ - path_max
-- name_max
+ - pipe_buf
-- path_max
+ - posix_async_io
-- pipe_buf
+ - posix_chown_restrictions
-- posix_async_io
+ - posix_no_trunc
-- posix_chown_restrictions
+ - posix_prio_io
-- posix_no_trunc
+ - posix_sync_io
-- posix_prio_io
+ - posix_vdisable
-- posix_sync_io
+ These values are accessed with the pathconf() and the fpathconf ()
+ functions.
-- posix_vdisable
+ .. code-block:: c
-These values are accessed with the pathconf() and the fpathconf () functions.
+ const char *dev
-.. code-block:: c
+ The is intended to contain a string that identifies the device that
+ contains the filesystem information. The filesystems that are currently
+ implemented are memory based and don't require a device specification.
- const char *dev
+ If the mt_point_node.node_access is NULL then we are mounting the base file
+ system.
-The is intended to contain a string that identifies the device that contains
-the filesystem information. The filesystems that are currently implemented are
-memory based and don't require a device specification.
+ The routine will create a directory node for the root of the IMFS file
+ system.
-If the mt_point_node.node_access is NULL then we are mounting the base file
-system.
+ The node will have read, write and execute permissions for owner, group and
+ others.
-The routine will create a directory node for the root of the IMFS file system.
+ The node's name will be a null string.
-The node will have read, write and execute permissions for owner, group and
-others.
+ A filesystem information structure(fs_info) will be allocated and
+ initialized for the IMFS filesystem. The fs_info pointer in the mount table
+ entry will be set to point the filesystem information structure.
-The node's name will be a null string.
+ The pathconf_info element of the mount table will be set to the appropriate
+ table of path configuration constants ( IMFS_LIMITS_AND_OPTIONS ).
-A filesystem information structure(fs_info) will be allocated and initialized
-for the IMFS filesystem. The fs_info pointer in the mount table entry will be
-set to point the filesystem information structure.
+ The fs_root_node structure will be filled in with the following:
-The pathconf_info element of the mount table will be set to the appropriate
-table of path configuration constants ( IMFS_LIMITS_AND_OPTIONS ).
+ - pointer to the allocated root node of the filesystem
-The fs_root_node structure will be filled in with the following:
+ - directory handlers for a directory node under the IMFS filesystem
-- pointer to the allocated root node of the filesystem
+ - OPS table functions for the IMFS
-- directory handlers for a directory node under the IMFS filesystem
-
-- OPS table functions for the IMFS
-
-A 0 will be returned to the calling routine if the process succeeded, otherwise
-a 1 will be returned.
+ A 0 will be returned to the calling routine if the process succeeded,
+ otherwise a 1 will be returned.
IMFS_unmount()
-~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``IMFS_unmount()``
-IMFS_unmount()
+Arguments:
+ .. code-block:: c
-**Arguments:**
-
-.. code-block:: c
+ rtems_filesystem_mount_table_entry_t *mt_entry
- rtems_filesystem_mount_table_entry_t *mt_entry
+File:
+ ``imfs_unmount.c``
-**File:**
+Description:
+ This routine allows the IMFS to unmount a filesystem that has been mounted
+ onto a IMFS directory.
-imfs_unmount.c
-
-**Description:**
-
-This routine allows the IMFS to unmount a filesystem that has been mounted onto
-a IMFS directory.
-
-The mount entry mount point node access is verified to be a mounted directory.
-It's mt_fs is set to NULL. This identifies to future calles into the IMFS that
-this directory node is no longer a mount point. Additionally, it will allow
-any directories that were hidden by the mounted system to again become visible.
+ The mount entry mount point node access is verified to be a mounted
+ directory. It's mt_fs is set to NULL. This identifies to future calles
+ into the IMFS that this directory node is no longer a mount point.
+ Additionally, it will allow any directories that were hidden by the mounted
+ system to again become visible.
IMFS_fsunmount()
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``imfs_fsunmount()``
-imfs_fsunmount()
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_filesystem_mount_table_entry_t *mt_entry
-.. code-block:: c
+File:
+ ``imfs_init.c``
- rtems_filesystem_mount_table_entry_t *mt_entry
+Description:
+ This method unmounts this instance of the IMFS file system. It is the
+ counterpart to the IMFS_initialize routine. It is called by the generic
+ code under the fsunmount_me callback.
-**File:**
-
-imfs_init.c
-
-**Description:**
-
-This method unmounts this instance of the IMFS file system. It is the
-counterpart to the IMFS_initialize routine. It is called by the generic code
-under the fsunmount_me callback.
-
-All method loops finding the first encountered node with no children and
-removing the node from the tree, thus returning allocated resources. This is
-done until all allocated nodes are returned.
+ All method loops finding the first encountered node with no children and
+ removing the node from the tree, thus returning allocated resources. This
+ is done until all allocated nodes are returned.
IMFS_utime()
-~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
IMFS_eval_link()
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Arguments:**
+File:
+ XXX
-XXX
-
-**File:**
-
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
Regular File Handler Table Functions
------------------------------------
@@ -753,326 +697,281 @@ this function management structure.
};
memfile_open() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-memfile_open()
-
-**Arguments:**
-
-.. code-block:: c
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- rtems_libio_t *iop,
- const char *pathname,
- unsigned32 flag,
- unsigned32 mode
+Corresponding Structure Element:
+ ``memfile_open()``
-**File:**
+Arguments:
+ .. code-block:: c
-memfile.c
+ rtems_libio_t *iop,
+ const char *pathname,
+ unsigned32 flag,
+ unsigned32 mode
-**Description:**
+File:
+ ``memfile.c``
-Currently this function is a shell. No meaningful processing is performed and a
-success code is always returned.
+Description:
+ Currently this function is a shell. No meaningful processing is performed
+ and a success code is always returned.
memfile_close() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-memfile_close()
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-.. code-block:: c
-
- rtems_libio_t *iop
+Corresponding Structure Element:
+ ``memfile_close()``
-**File:**
+Arguments:
+ .. code-block:: c
-memfile.c
+ rtems_libio_t *iop
-**Description:**
+File:
+ ``memfile.c``
-This routine is a dummy for regular files under the base filesystem. It
-performs a capture of the IMFS_jnode_t pointer from the file control block and
-then immediately returns a success status.
+Description:
+ This routine is a dummy for regular files under the base filesystem. It
+ performs a capture of the IMFS_jnode_t pointer from the file control block
+ and then immediately returns a success status.
memfile_read() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``memfile_read()``
-memfile_read()
+Arguments:
+ .. code-block:: c
-**Arguments:**
-
-.. code-block:: c
+ rtems_libio_t *iop,
+ void *buffer,
+ unsigned32 count
- rtems_libio_t *iop,
- void *buffer,
- unsigned32 count
+File:
+ ``memfile.c``
-**File:**
+Description:
+ This routine will determine the ``jnode`` that is associated with this
+ file.
-memfile.c
+ It will then call IMFS_memfile_read() with the ``jnode``, file position
+ index, buffer and transfer count as arguments.
-**Description:**
+ IMFS_memfile_read() will do the following:
-This routine will determine the ``jnode`` that is associated with this file.
+ - Verify that the ``jnode`` is associated with a memory file
-It will then call IMFS_memfile_read() with the ``jnode``, file position index,
-buffer and transfer count as arguments.
+ - Verify that the destination of the read is valid
-IMFS_memfile_read() will do the following:
+ - Adjust the length of the read if it is too long
-- Verify that the ``jnode`` is associated with a memory file
+ - Acquire data from the memory blocks associated with the file
-- Verify that the destination of the read is valid
-
-- Adjust the length of the read if it is too long
-
-- Acquire data from the memory blocks associated with the file
-
-- Update the access time for the data in the file
+ - Update the access time for the data in the file
memfile_write() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**Arguments:**
+Arguments:
+ XXX
-XXX
+File:
+ XXX
-**File:**
-
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
memfile_ioctl() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**Arguments:**
+Arguments:
+ .. code-block:: c
-.. code-block:: c
-
- rtems_libio_t *iop,
- unsigned32 command,
- void *buffer
-
-**File:**
-
-memfile.c
+ rtems_libio_t *iop,
+ unsigned32 command,
+ void *buffer
-**Description:**
+File:
+ ``memfile.c``
-The current code is a placeholder for future development. The routine returns
-a successful completion status.
+Description:
+ The current code is a placeholder for future development. The routine
+ returns a successful completion status.
memfile_lseek() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-Memfile_lseek()
-
-**Arguments:**
-
-.. code-block:: c
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- rtems_libio_t *iop,
- off_t offset,
- int whence
+Corresponding Structure Element:
+ ``Memfile_lseek()``
-**File:**
+Arguments:
+ .. code-block:: c
-memfile.c
+ rtems_libio_t *iop,
+ off_t offset,
+ int whence
-**Description:**
+File:
+ ``memfile.c``
-This routine make sure that the memory based file is sufficiently large to
-allow for the new file position index.
+Description:
+ This routine make sure that the memory based file is sufficiently large to
+ allow for the new file position index.
-The IMFS_memfile_extend() function is used to evaluate the current size of the
-memory file and allocate additional memory blocks if required by the new file
-position index. A success code is always returned from this routine.
+ The IMFS_memfile_extend() function is used to evaluate the current size of
+ the memory file and allocate additional memory blocks if required by the
+ new file position index. A success code is always returned from this
+ routine.
IMFS_stat() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-IMFS_stat()
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-.. code-block:: c
-
- rtems_filesystem_location_info_t *loc,
- struct stat *buf
+Corresponding Structure Element:
+ ``IMFS_stat()``
-**File:**
+Arguments:
+ .. code-block:: c
-imfs_stat.c
+ rtems_filesystem_location_info_t *loc,
+ struct stat *buf
-**Description:**
+File:
+ ``imfs_stat.c``
-This routine actually performs status processing for both devices and regular
-files.
+Description:
+ This routine actually performs status processing for both devices and
+ regular files.
-The IMFS_jnode_t structure is referenced to determine the type of node under
-the filesystem.
+ The IMFS_jnode_t structure is referenced to determine the type of node
+ under the filesystem.
-If the node is associated with a device, node information is extracted and
-transformed to set the st_dev element of the stat structure.
+ If the node is associated with a device, node information is extracted and
+ transformed to set the st_dev element of the stat structure.
-If the node is a regular file, the size of the regular file is extracted from
-the node.
+ If the node is a regular file, the size of the regular file is extracted
+ from the node.
-This routine rejects other node types.
+ This routine rejects other node types.
-The following information is extracted from the node and placed in the stat
-structure:
+ The following information is extracted from the node and placed in the stat
+ structure:
-- st_mode
+ - st_mode
-- st_nlink
+ - st_nlink
-- st_ino
+ - st_ino
-- st_uid
+ - st_uid
-- st_gid
+ - st_gid
-- st_atime
+ - st_atime
-- st_mtime
+ - st_mtime
-- st_ctime
+ - st_ctime
IMFS_fchmod() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-IMFS_fchmod()
+Corresponding Structure Element:
+ ``IMFS_fchmod()``
-**Arguments:**
+Arguments:
+ .. code-block:: c
-.. code-block:: c
-
- rtems_libio_t *iop
- mode_t mode
-
-**File:**
-
-imfs_fchmod.c
+ rtems_libio_t *iop
+ mode_t mode
-**Description:**
+File:
+ ``imfs_fchmod.c``
-This routine will obtain the pointer to the IMFS_jnode_t structure from the
-information currently in the file control block.
+Description:
+ This routine will obtain the pointer to the IMFS_jnode_t structure from the
+ information currently in the file control block.
-Based on configuration the routine will acquire the user ID from a call to
-getuid() or from the IMFS_jnode_t structure.
+ Based on configuration the routine will acquire the user ID from a call to
+ getuid() or from the IMFS_jnode_t structure.
-It then checks to see if we have the ownership rights to alter the mode of the
-file. If the caller does not, an error code is returned.
+ It then checks to see if we have the ownership rights to alter the mode of
+ the file. If the caller does not, an error code is returned.
-An additional test is performed to verify that the caller is not trying to
-alter the nature of the node. If the caller is attempting to alter more than
-the permissions associated with user group and other, an error is returned.
+ An additional test is performed to verify that the caller is not trying to
+ alter the nature of the node. If the caller is attempting to alter more
+ than the permissions associated with user group and other, an error is
+ returned.
-If all the preconditions are met, the user, group and other fields are set
-based on the mode calling parameter.
+ If all the preconditions are met, the user, group and other fields are set
+ based on the mode calling parameter.
memfile_ftruncate() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
No pathconf() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``NULL``
-NULL
+Arguments:
+ Not Implemented
-**Arguments:**
+File:
+ Not Implemented
-Not Implemented
-
-**File:**
-
-Not Implemented
-
-**Description:**
-
-Not Implemented
+Description:
+ Not Implemented
No fsync() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**File:**
+File:
+ XXX
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
IMFS_fdatasync() for Regular Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**File:**
+File:
+ XXX
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
Directory Handler Table Functions
---------------------------------
@@ -1103,304 +1002,259 @@ this function management structure.
};
IMFS_dir_open() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``imfs_dir_open()``
-imfs_dir_open()
+Arguments:
+ .. code-block:: c
-**Arguments:**
-
-.. code-block:: c
+ rtems_libio_t *iop,
+ const char *pathname,
+ unsigned32 flag,
+ unsigned32 mode
- rtems_libio_t *iop,
- const char *pathname,
- unsigned32 flag,
- unsigned32 mode
+File:
+ ``imfs_directory.c``
-**File:**
+Description:
+ This routine will look into the file control block to find the ``jnode``
+ that is associated with the directory.
-imfs_directory.c
+ The routine will verify that the node is a directory. If its not a
+ directory an error code will be returned.
-**Description:**
-
-This routine will look into the file control block to find the ``jnode`` that
-is associated with the directory.
-
-The routine will verify that the node is a directory. If its not a directory an
-error code will be returned.
-
-If it is a directory, the offset in the file control block will be set to 0.
-This allows us to start reading at the beginning of the directory.
+ If it is a directory, the offset in the file control block will be set
+ to 0. This allows us to start reading at the beginning of the directory.
IMFS_dir_close() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-imfs_dir_close()
-
-**Arguments:**
-
-.. code-block:: c
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- rtems_libio_t *iop
+Corresponding Structure Element:
+ ``imfs_dir_close()``
-**File:**
+Arguments:
+ .. code-block:: c
-imfs_directory.c
+ rtems_libio_t *iop
-**Description:**
+File:
+ ``imfs_directory.c``
-This routine is a dummy for directories under the base filesystem. It
-immediately returns a success status.
+Description:
+ This routine is a dummy for directories under the base filesystem. It
+ immediately returns a success status.
IMFS_dir_read() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``imfs_dir_read``
-imfs_dir_read
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_libio_t *iop,
+ void *buffer,
+ unsigned32 count
-.. code-block:: c
-
- rtems_libio_t *iop,
- void *buffer,
- unsigned32 count
-
-**File:**
-
-imfs_directory.c
+File:
+ ``imfs_directory.c``
-**Description:**
-
-This routine will read a fixed number of directory entries from the current
-directory offset. The number of directory bytes read will be returned from this
-routine.
+Description:
+ This routine will read a fixed number of directory entries from the current
+ directory offset. The number of directory bytes read will be returned from
+ this routine.
No write() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**File:**
+Arguments:
+ XXX
-XXX
+File:
+ XXX
-**Description:**
-
-XXX
+Description:
+ XXX
No ioctl() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-ioctl
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ ``ioctl``
-**File:**
+Arguments:
+ Not supported
-Not supported
+File:
+ Not supported
-**Description:**
-
-XXX
+Description:
+ XXX
IMFS_dir_lseek() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-imfs_dir_lseek()
-
-**Arguments:**
-
-.. code-block:: c
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- rtems_libio_t *iop,
- off_t offset,
- int whence
+Corresponding Structure Element:
+ ``imfs_dir_lseek()``
-**File:**
+Arguments:
+ .. code-block:: c
-imfs_directory.c
+ rtems_libio_t *iop,
+ off_t offset,
+ int whence
-**Description:**
+File:
+ ``imfs_directory.c``
-This routine alters the offset in the file control block.
+Description:
+ This routine alters the offset in the file control block.
-No test is performed on the number of children under the current open
-directory. The imfs_dir_read() function protects against reads beyond the
-current size to the directory by returning a 0 bytes transfered to the calling
-programs whenever the file position index exceeds the last entry in the open
-directory.
+ No test is performed on the number of children under the current open
+ directory. The imfs_dir_read() function protects against reads beyond the
+ current size to the directory by returning a 0 bytes transfered to the
+ calling programs whenever the file position index exceeds the last entry in
+ the open directory.
IMFS_dir_fstat() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``imfs_dir_fstat()``
-imfs_dir_fstat()
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_filesystem_location_info_t *loc,
+ struct stat *buf
-.. code-block:: c
-
- rtems_filesystem_location_info_t *loc,
- struct stat *buf
-
-**File:**
-
-imfs_directory.c
+File:
+ ``imfs_directory.c``
-**Description:**
+Description:
+ The node access information in the rtems_filesystem_location_info_t
+ structure is used to locate the appropriate IMFS_jnode_t structure. The
+ following information is taken from the IMFS_jnode_t structure and placed
+ in the stat structure:
-The node access information in the rtems_filesystem_location_info_t structure
-is used to locate the appropriate IMFS_jnode_t structure. The following
-information is taken from the IMFS_jnode_t structure and placed in the stat
-structure:
-
-- st_ino
+ - st_ino
-- st_mode
+ - st_mode
-- st_nlink
+ - st_nlink
-- st_uid
+ - st_uid
-- st_gid
+ - st_gid
-- st_atime
+ - st_atime
-- st_mtime
+ - st_mtime
-- st_ctime
+ - st_ctime
-The st_size field is obtained by running through the chain of directory entries
-and summing the sizes of the dirent structures associated with each of the
-children of the directory.
+ The st_size field is obtained by running through the chain of directory
+ entries and summing the sizes of the dirent structures associated with each
+ of the children of the directory.
IMFS_fchmod() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``IMFS_fchmod()``
-IMFS_fchmod()
+Arguments:
+ .. code-block:: c
-**Arguments:**
-
-.. code-block:: c
+ rtems_libio_t *iop
+ mode_t mode
- rtems_libio_t *iop
- mode_t mode
+File:
+ ``imfs_fchmod.c``
-**File:**
+Description:
+ This routine will obtain the pointer to the IMFS_jnode_t structure from the
+ information currently in the file control block.
-imfs_fchmod.c
+ Based on configuration the routine will acquire the user ID from a call to
+ getuid() or from the IMFS_jnode_t structure.
-**Description:**
+ It then checks to see if we have the ownership rights to alter the mode of
+ the file. If the caller does not, an error code is returned.
-This routine will obtain the pointer to the IMFS_jnode_t structure from the
-information currently in the file control block.
+ An additional test is performed to verify that the caller is not trying to
+ alter the nature of the node. If the caller is attempting to alter more
+ than the permissions associated with user group and other, an error is
+ returned.
-Based on configuration the routine will acquire the user ID from a call to
-getuid() or from the IMFS_jnode_t structure.
-
-It then checks to see if we have the ownership rights to alter the mode of the
-file. If the caller does not, an error code is returned.
-
-An additional test is performed to verify that the caller is not trying to
-alter the nature of the node. If the caller is attempting to alter more than
-the permissions associated with user group and other, an error is returned.
-
-If all the preconditions are met, the user, group and other fields are set
-based on the mode calling parameter.
+ If all the preconditions are met, the user, group and other fields are set
+ based on the mode calling parameter.
No ftruncate() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**Arguments:**
+Arguments:
+ XXX
-XXX
+File:
+ XXX
-**File:**
-
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
No fpathconf() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-fpathconf
+Corresponding Structure Element:
+ ``fpathconf``
-**Arguments:**
+Arguments:
+ Not Implemented
-Not Implemented
-
-**File:**
-
-Not Implemented
+File:
+ Not Implemented
-**Description:**
-
-Not Implemented
+Description:
+ Not Implemented
No fsync() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**File:**
+File:
+ XXX
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
IMFS_fdatasync() for Directories
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**File:**
+Arguments:
+ XXX
-XXX
+File:
+ XXX
-**Description:**
-
-XXX
+Description:
+ XXX
Device Handler Table Functions
------------------------------
@@ -1430,351 +1284,305 @@ function management structure.
} rtems_filesystem_file_handlers_r;
device_open() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^
-device_open()
+Corresponding Structure Element:
+ ``device_open()``
-**Arguments:**
-
-.. code-block:: c
+Arguments:
+ .. code-block:: c
- rtems_libio_t *iop,
- const char *pathname,
- unsigned32 flag,
- unsigned32 mode
+ rtems_libio_t *iop,
+ const char *pathname,
+ unsigned32 flag,
+ unsigned32 mode
-**File:**
+File:
+ ``deviceio.c``
-deviceio.c
+Description:
+ This routine will use the file control block to locate the node structure
+ for the device.
-**Description:**
+ It will extract the major and minor device numbers from the ``jnode``.
-This routine will use the file control block to locate the node structure for
-the device.
-
-It will extract the major and minor device numbers from the ``jnode``.
-
-The major and minor device numbers will be used to make a rtems_io_open()
-function call to open the device driver. An argument list is sent to the driver
-that contains the file control block, flags and mode information.
+ The major and minor device numbers will be used to make a rtems_io_open()
+ function call to open the device driver. An argument list is sent to the
+ driver that contains the file control block, flags and mode information.
device_close() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-device_close()
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ ``device_close()``
-.. code-block:: c
-
- rtems_libio_t *iop
+Arguments:
+ .. code-block:: c
-**File:**
+ rtems_libio_t *iop
-deviceio.c
+File:
+ ``deviceio.c``
-**Description:**
+Description:
+ This routine extracts the major and minor device driver numbers from the
+ IMFS_jnode_t that is referenced in the file control block.
-This routine extracts the major and minor device driver numbers from the
-IMFS_jnode_t that is referenced in the file control block.
+ It also forms an argument list that contains the file control block.
-It also forms an argument list that contains the file control block.
-
-A rtems_io_close() function call is made to close the device specified by the
-major and minor device numbers.
+ A rtems_io_close() function call is made to close the device specified by
+ the major and minor device numbers.
device_read() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``device_read()``
-device_read()
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_libio_t *iop,
+ void *buffer,
+ unsigned32 count
-.. code-block:: c
+File:
+ ``deviceio.c``
- rtems_libio_t *iop,
- void *buffer,
- unsigned32 count
+Description:
+ This routine will extract the major and minor numbers for the device from
+ the - jnode- associated with the file descriptor.
-**File:**
+ A rtems_io_read() call will be made to the device driver associated with
+ the file descriptor. The major and minor device number will be sent as
+ arguments as well as an argument list consisting of:
-deviceio.c
+ - file control block
-**Description:**
+ - file position index
-This routine will extract the major and minor numbers for the device from the -
-jnode- associated with the file descriptor.
+ - buffer pointer where the data read is to be placed
-A rtems_io_read() call will be made to the device driver associated with the
-file descriptor. The major and minor device number will be sent as arguments as
-well as an argument list consisting of:
+ - count indicating the number of bytes that the program wishes to read from
+ the device
-- file control block
+ - flags from the file control block
-- file position index
-
-- buffer pointer where the data read is to be placed
-
-- count indicating the number of bytes that the program wishes to read
- from the device
-
-- flags from the file control block
-
-On return from the rtems_io_read() the number of bytes that were actually read
-will be returned to the calling program.
+ On return from the rtems_io_read() the number of bytes that were actually
+ read will be returned to the calling program.
device_write() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX
device_ioctl() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``ioctl``
-ioctl
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_libio_t *iop,
+ unsigned32 command,
+ void *buffer
-.. code-block:: c
-
- rtems_libio_t *iop,
- unsigned32 command,
- void *buffer
-
-**File:**
-
-deviceio.c
+File:
+ ``deviceio.c``
-**Description:**
+Description:
+ This handler will obtain status information about a device.
-This handler will obtain status information about a device.
+ The form of status is device dependent.
-The form of status is device dependent.
+ The rtems_io_control() function uses the major and minor number of the
+ device to obtain the status information.
-The rtems_io_control() function uses the major and minor number of the device
-to obtain the status information.
+ rtems_io_control() requires an rtems_libio_ioctl_args_t argument list which
+ contains the file control block, device specific command and a buffer
+ pointer to return the device status information.
-rtems_io_control() requires an rtems_libio_ioctl_args_t argument list which
-contains the file control block, device specific command and a buffer pointer
-to return the device status information.
+ The device specific command should indicate the nature of the information
+ that is desired from the device.
-The device specific command should indicate the nature of the information that
-is desired from the device.
+ After the rtems_io_control() is processed, the buffer should contain the
+ requested device information.
-After the rtems_io_control() is processed, the buffer should contain the
-requested device information.
-
-If the device information is not obtained properly a -1 will be returned to the
-calling program, otherwise the ioctl_return value is returned.
+ If the device information is not obtained properly a -1 will be returned to
+ the calling program, otherwise the ioctl_return value is returned.
device_lseek() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-device_lseek()
+Corresponding Structure Element:
+ ``device_lseek()``
-**Arguments:**
-
-.. code-block:: c
+Arguments:
+ .. code-block:: c
- rtems_libio_t *iop,
- off_t offset,
- int whence
+ rtems_libio_t *iop,
+ off_t offset,
+ int whence
-**File:**
+File:
+ ``deviceio.c``
-deviceio.c
-
-**Description:**
-
-At the present time this is a placeholder function. It always returns a
-successful status.
+Description:
+ At the present time this is a placeholder function. It always returns a
+ successful status.
IMFS_stat() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-IMFS_stat()
+^^^^^^^^^^^^^^^^^^^^^^^
-**Arguments:**
+Corresponding Structure Element:
+ ``IMFS_stat()``
-.. code-block:: c
-
- rtems_filesystem_location_info_t *loc,
- struct stat *buf
+Arguments:
+ .. code-block:: c
-**File:**
+ rtems_filesystem_location_info_t *loc,
+ struct stat *buf
-imfs_stat.c
+File:
+ ``imfs_stat.c``
-**Description:**
+Description:
+ This routine actually performs status processing for both devices and
+ regular files.
-This routine actually performs status processing for both devices and regular files.
+ The IMFS_jnode_t structure is referenced to determine the type of node
+ under the filesystem.
-The IMFS_jnode_t structure is referenced to determine the type of node under
-the filesystem.
+ If the node is associated with a device, node information is extracted and
+ transformed to set the st_dev element of the stat structure.
-If the node is associated with a device, node information is extracted and
-transformed to set the st_dev element of the stat structure.
+ If the node is a regular file, the size of the regular file is extracted
+ from the node.
-If the node is a regular file, the size of the regular file is extracted from
-the node.
+ This routine rejects other node types.
-This routine rejects other node types.
-
-The following information is extracted from the node and placed in the stat
-structure:
+ The following information is extracted from the node and placed in the stat
+ structure:
-- st_mode
+ - st_mode
-- st_nlink
+ - st_nlink
-- st_ino
+ - st_ino
-- st_uid
+ - st_uid
-- st_gid
+ - st_gid
-- st_atime
+ - st_atime
-- st_mtime
+ - st_mtime
-- st_ctime
+ - st_ctime
IMFS_fchmod() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ ``IMFS_fchmod()``
-IMFS_fchmod()
+Arguments:
+ .. code-block:: c
-**Arguments:**
+ rtems_libio_t *iop
+ mode_t mode
-.. code-block:: c
-
- rtems_libio_t *iop
- mode_t mode
-
-**File:**
-
-imfs_fchmod.c
+File:
+ ``imfs_fchmod.c``
-**Description:**
+Description:
+ This routine will obtain the pointer to the IMFS_jnode_t structure from the
+ information currently in the file control block.
-This routine will obtain the pointer to the IMFS_jnode_t structure from the
-information currently in the file control block.
+ Based on configuration the routine will acquire the user ID from a call to
+ getuid() or from the IMFS_jnode_t structure.
-Based on configuration the routine will acquire the user ID from a call to
-getuid() or from the IMFS_jnode_t structure.
+ It then checks to see if we have the ownership rights to alter the mode of
+ the file. If the caller does not, an error code is returned.
-It then checks to see if we have the ownership rights to alter the mode of the
-file. If the caller does not, an error code is returned.
+ An additional test is performed to verify that the caller is not trying to
+ alter the nature of the node. If the caller is attempting to alter more
+ than the permissions associated with user group and other, an error is
+ returned.
-An additional test is performed to verify that the caller is not trying to
-alter the nature of the node. If the caller is attempting to alter more than
-the permissions associated with user group and other, an error is returned.
-
-If all the preconditions are met, the user, group and other fields are set
-based on the mode calling parameter.
+ If all the preconditions are met, the user, group and other fields are set
+ based on the mode calling parameter.
No ftruncate() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-XXX
+Corresponding Structure Element:
+ XXX
-**File:**
+Arguments:
+ XXX
-XXX
+File:
+ XXX
-**Description:**
-
-XXX
+Description:
+ XXX
No fpathconf() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-**Corresponding Structure Element:**
-
-fpathconf
-
-**Arguments:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-Not Implemented
-
-**File:**
+Corresponding Structure Element:
+ ``fpathconf``
-Not Implemented
+Arguments:
+ Not Implemented
-**Description:**
+File:
+ Not Implemented
-Not Implemented
+Description:
+ Not Implemented
No fsync() for Devices
-~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^
-**Corresponding Structure Element:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Arguments:**
+File:
+ XXX
-XXX
-
-**File:**
-
-XXX
-
-**Description:**
-
-XXX
+Description:
+ XXX
No fdatasync() for Devices
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^
Not Implemented
-**Corresponding Structure Element:**
-
-XXX
-
-**Arguments:**
-
-XXX
-
-**File:**
+Corresponding Structure Element:
+ XXX
-XXX
+Arguments:
+ XXX
-**Description:**
+File:
+ XXX
-XXX
+Description:
+ XXX