diff options
Diffstat (limited to 'filesystem/pathname_eval.rst')
-rw-r--r-- | filesystem/pathname_eval.rst | 112 |
1 files changed, 55 insertions, 57 deletions
diff --git a/filesystem/pathname_eval.rst b/filesystem/pathname_eval.rst index a7d92c2..4813f86 100644 --- a/filesystem/pathname_eval.rst +++ b/filesystem/pathname_eval.rst @@ -1,40 +1,44 @@ .. comment SPDX-License-Identifier: CC-BY-SA-4.0 +.. COMMENT: COPYRIGHT (c) 1988-2002. +.. COMMENT: On-Line Applications Research Corporation (OAR). +.. COMMENT: All rights reserved. + Pathname Evaluation ################### -This chapter describes the pathname evaluation process for the -RTEMS Filesystem Infrastructure. -.. code:: c +This chapter describes the pathname evaluation process for the RTEMS Filesystem +Infrastructure. + +.. code-block:: shell XXX Include graphic of the path evaluation process Pathname Evaluation Handlers ============================ -There are two pathname evaluation routines. The handler patheval() -is called to find, verify privlages on and return information on a node -that exists. The handler evalformake() is called to find, verify -permissions, and return information on a node that is to become a parent. -Additionally, evalformake() returns a pointer to the start of the name of -the new node to be created. +There are two pathname evaluation routines. The handler patheval() is called +to find, verify privlages on and return information on a node that exists. The +handler ``evalformake()`` is called to find, verify permissions, and return +information on a node that is to become a parent. Additionally, evalformake() +returns a pointer to the start of the name of the new node to be created. -Pathname evaluation is specific to a filesystem. -Each filesystem is required to provide both a patheval() and an evalformake() -routine. Both of these routines gets a name to evaluate and a node indicating -where to start the evaluation. +Pathname evaluation is specific to a filesystem. Each filesystem is required +to provide both a ``patheval()`` and an ``evalformake()`` routine. Both of +these routines gets a name to evaluate and a node indicating where to start the +evaluation. Crossing a Mount Point During Path Evaluation ============================================= -If the filesystem supports the mount command, the evaluate routines -must handle crossing the mountpoint. The evaluate routine should evaluate -the name upto the first directory node where the new filesystem is mounted. -The filesystem may process terminator characters prior to calling the -evaluate routine for the new filesystem. A pointer to the portion of the -name which has not been evaluated along with the root node of the new -file system ( gotten from the mount table entry ) is passed to the correct -mounted filesystem evaluate routine. +If the filesystem supports the mount command, the evaluate routines must handle +crossing the mountpoint. The evaluate routine should evaluate the name upto +the first directory node where the new filesystem is mounted. The filesystem +may process terminator characters prior to calling the evaluate routine for the +new filesystem. A pointer to the portion of the name which has not been +evaluated along with the root node of the new file system (gotten from the +mount table entry) is passed to the correct mounted filesystem evaluate +routine. The rtems_filesystem_location_info_t Structure ============================================== @@ -43,55 +47,49 @@ The ``rtems_filesystem_location_info_t`` structure contains all information necessary for identification of a node. The generic rtems filesystem code defines two global -rtems_filesystem_location_info_t structures, the``rtems_filesystem_root`` and the ``rtems_filesystem_current``. -Both are initially defined to be the root node of the base filesystem. -Once the chdir command is correctly used the ``rtems_filesystem_current`` -is set to the location specified by the command. +rtems_filesystem_location_info_t structures, the``rtems_filesystem_root`` and +the ``rtems_filesystem_current``. Both are initially defined to be the root +node of the base filesystem. Once the chdir command is correctly used the +``rtems_filesystem_current`` is set to the location specified by the command. The filesystem generic code peeks at the first character in the name to be -evaluated. If this character is a valid seperator, the``rtems_filesystem_root`` is used as the node to start the evaluation -with. Otherwise, the ``rtems_filesystem_current`` node is used as the -node to start evaluating with. Therefore, a valid -rtems_filesystem_location_info_t is given to the evaluate routine to start -evaluation with. The evaluate routines are then responsible for making -any changes necessary to this structure to correspond to the name being -parsed. -.. code:: c +evaluated. If this character is a valid seperator, +the``rtems_filesystem_root`` is used as the node to start the evaluation with. +Otherwise, the ``rtems_filesystem_current`` node is used as the node to start +evaluating with. Therefore, a valid rtems_filesystem_location_info_t is given +to the evaluate routine to start evaluation with. The evaluate routines are +then responsible for making any changes necessary to this structure to +correspond to the name being parsed. + +.. code-block:: c struct rtems_filesystem_location_info_tt { - void \*node_access; - rtems_filesystem_file_handlers_r \*handlers; - rtems_filesystem_operations_table \*ops; - rtems_filesystem_mount_table_entry_t \*mt_entry; + void *node_access; + rtems_filesystem_file_handlers_r *handlers; + rtems_filesystem_operations_table *ops; + rtems_filesystem_mount_table_entry_t *mt_entry; }; *node_access* - This element is filesystem specific. A filesystem can define and store - any information necessary to identify a node at this location. This element - is normally filled in by the filesystem's evaluate routine. For the - filesystem's root node, the filesystem's initilization routine should - fill this in, and it should remain valid until the instance of the - filesystem is unmounted. + This element is filesystem specific. A filesystem can define and store any + information necessary to identify a node at this location. This element is + normally filled in by the filesystem's evaluate routine. For the + filesystem's root node, the filesystem's initilization routine should fill + this in, and it should remain valid until the instance of the filesystem is + unmounted. *handlers* - This element is defined as a set of routines that may change within a - given filesystem based upon node type. For example a directory and a - memory file may have to completely different read routines. This element - is set to an initialization state defined by the mount table, and may - be set to the desired state by the evaluation routines. + This element is defined as a set of routines that may change within a given + filesystem based upon node type. For example a directory and a memory file + may have to completely different read routines. This element is set to an + initialization state defined by the mount table, and may be set to the + desired state by the evaluation routines. *ops* This element is defined as a set of routines that remain static for the - filesystem. This element identifies entry points into the filesystem - to the generic code. + filesystem. This element identifies entry points into the filesystem to + the generic code. *mt_entry* This element identifies the mount table entry for this instance of the filesystem. - -.. COMMENT: COPYRIGHT (c) 1988-2002. - -.. COMMENT: On-Line Applications Research Corporation (OAR). - -.. COMMENT: All rights reserved. - |