path: root/doc/filesystem/patheval.t
diff options
authorJennifer Averett <>1999-10-26 15:42:10 +0000
committerJennifer Averett <>1999-10-26 15:42:10 +0000
commit10c1befe7e4f12dbd8f6e65b135806e78dec64fe (patch)
tree4c744241139dbfcb930c724301a97582a330528b /doc/filesystem/patheval.t
parentPatch from Emmanuel Raguet <> to fix a small bug where (diff)
Added information on the evaluate and evaluate for make routines.
Added details on how generic code starts the pathevaluation process.
Diffstat (limited to 'doc/filesystem/patheval.t')
1 files changed, 80 insertions, 15 deletions
diff --git a/doc/filesystem/patheval.t b/doc/filesystem/patheval.t
index b5108f08fb..de8c1bb01f 100644
--- a/doc/filesystem/patheval.t
+++ b/doc/filesystem/patheval.t
@@ -8,38 +8,103 @@
@chapter Pathname Evaluation
+This chapter describes the pathname evaluation process for the
+RTEMS Filesystem Infrastructure.
XXX Include graphic of the path evaluation process with Jennifer's
+XXX explanations
+@end example
-@itemize @bullet
+@section Pathname Evaluation Handlers
-@item There are two pathname evaluation routines. The handler patheval()
+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.
-@item Pathname evaluation is specific to a filesystem
+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.
+@section 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.
+@section The rtems_filesystem_location_info_t Structure
+The @code{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
+@code{rtems_filesystem_root} and the @code{rtems_filesystem_current}.
+Both are initially defined to be the root node of the base filesystem.
+Once the chdir command is correctly used the @code{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
+@code{rtems_filesystem_root} is used as the node to start the evaluation
+with. Otherwise, the @code{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
+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;
+@end example
+@table @b
+@item 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.
+@item 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.
-@item Mechanics of crossing a mount point during the evaluation of a path
+@item 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.
-@item Role of rtems_filesystem_location_info_t structure
+@item mt_entry
+This element identifies the mount table entry for this instance of the
-@itemize @bullet
+@end table
-@item Finding filesystem node information
-@item Finding filesystem node handlers
-@item Finding filesystem node operations table
-@item Finding mount table entry for the filesystem that this node is part
-@end itemize
-@end itemize