[rtems commit] IMFS: Reduce IMFS node types

Sebastian Huber sebh at rtems.org
Thu Jan 29 08:54:43 UTC 2015


Module:    rtems
Branch:    master
Commit:    40d062f5cbd9ef8e6fe7432a4e36aad1923e4c21
Changeset: http://git.rtems.org/rtems/commit/?id=40d062f5cbd9ef8e6fe7432a4e36aad1923e4c21

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Jan 28 18:47:19 2015 +0100

IMFS: Reduce IMFS node types

Provide only types used by IMFS_mknod().

---

 cpukit/libfs/src/imfs/fifoimfs_init.c          |  3 ---
 cpukit/libfs/src/imfs/imfs.h                   | 29 +-------------------------
 cpukit/libfs/src/imfs/imfs_creat.c             |  2 +-
 cpukit/libfs/src/imfs/imfs_init.c              |  3 ---
 cpukit/libfs/src/imfs/imfs_link.c              |  6 ++++--
 cpukit/libfs/src/imfs/imfs_load_tar.c          |  2 +-
 cpukit/libfs/src/imfs/imfs_make_generic_node.c |  2 +-
 cpukit/libfs/src/imfs/imfs_mknod.c             | 13 ++++++++----
 cpukit/libfs/src/imfs/imfs_symlink.c           |  6 ++++--
 cpukit/libfs/src/imfs/miniimfs_init.c          |  3 ---
 10 files changed, 21 insertions(+), 48 deletions(-)

diff --git a/cpukit/libfs/src/imfs/fifoimfs_init.c b/cpukit/libfs/src/imfs/fifoimfs_init.c
index 81041e9..206c96b 100644
--- a/cpukit/libfs/src/imfs/fifoimfs_init.c
+++ b/cpukit/libfs/src/imfs/fifoimfs_init.c
@@ -52,10 +52,7 @@ static const IMFS_node_control *const
   IMFS_fifo_node_controls [IMFS_TYPE_COUNT] = {
   [IMFS_DIRECTORY] = &IMFS_node_control_directory,
   [IMFS_DEVICE] = &IMFS_node_control_device,
-  [IMFS_HARD_LINK] = &IMFS_node_control_hard_link,
-  [IMFS_SYM_LINK] = &IMFS_node_control_sym_link,
   [IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
-  [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
   [IMFS_FIFO] = &IMFS_node_control_fifo
 };
 
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
index fe99493..b8ff29d 100644
--- a/cpukit/libfs/src/imfs/imfs.h
+++ b/cpukit/libfs/src/imfs/imfs.h
@@ -100,10 +100,7 @@ typedef block_p *block_ptr;
 typedef enum {
   IMFS_DIRECTORY,
   IMFS_DEVICE,
-  IMFS_HARD_LINK,
-  IMFS_SYM_LINK,
   IMFS_MEMORY_FILE,
-  IMFS_LINEAR_FILE,
   IMFS_FIFO
 } IMFS_jnode_types_t;
 
@@ -399,8 +396,6 @@ typedef struct {
 
 extern const IMFS_node_control IMFS_node_control_directory;
 extern const IMFS_node_control IMFS_node_control_device;
-extern const IMFS_node_control IMFS_node_control_hard_link;
-extern const IMFS_node_control IMFS_node_control_sym_link;
 extern const IMFS_node_control IMFS_node_control_memfile;
 extern const IMFS_node_control IMFS_node_control_linfile;
 extern const IMFS_node_control IMFS_node_control_fifo;
@@ -594,7 +589,7 @@ extern IMFS_jnode_t *IMFS_allocate_node(
  * Create an IMFS filesystem node of an arbitrary type that is NOT
  * the root directory node.
  */
-extern IMFS_jnode_t *IMFS_create_node_with_control(
+extern IMFS_jnode_t *IMFS_create_node(
   const rtems_filesystem_location_info_t *parentloc,
   const IMFS_node_control *node_control,
   const char *name,
@@ -979,28 +974,6 @@ static inline bool IMFS_is_hard_link( mode_t mode )
   return ( mode & S_IFMT ) == IMFS_STAT_FMT_HARD_LINK;
 }
 
-static inline IMFS_jnode_t *IMFS_create_node(
-  const rtems_filesystem_location_info_t *parentloc,
-  IMFS_jnode_types_t type,
-  const char *name,
-  size_t namelen,
-  mode_t mode,
-  void *arg
-)
-{
-  const IMFS_fs_info_t *fs_info =
-    (const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;
-
-  return IMFS_create_node_with_control(
-    parentloc,
-    fs_info->node_controls [type],
-    name,
-    namelen,
-    mode,
-    arg
-  );
-}
-
 /** @} */
 
 /**
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c
index effb84b..e6dceae 100644
--- a/cpukit/libfs/src/imfs/imfs_creat.c
+++ b/cpukit/libfs/src/imfs/imfs_creat.c
@@ -86,7 +86,7 @@ IMFS_jnode_t *IMFS_allocate_node(
   return initialized_node;
 }
 
-IMFS_jnode_t *IMFS_create_node_with_control(
+IMFS_jnode_t *IMFS_create_node(
   const rtems_filesystem_location_info_t *parentloc,
   const IMFS_node_control *node_control,
   const char *name,
diff --git a/cpukit/libfs/src/imfs/imfs_init.c b/cpukit/libfs/src/imfs/imfs_init.c
index 596f81b..21b6220 100644
--- a/cpukit/libfs/src/imfs/imfs_init.c
+++ b/cpukit/libfs/src/imfs/imfs_init.c
@@ -48,10 +48,7 @@ static const IMFS_node_control *const
   IMFS_node_controls [IMFS_TYPE_COUNT] = {
   [IMFS_DIRECTORY] = &IMFS_node_control_directory,
   [IMFS_DEVICE] = &IMFS_node_control_device,
-  [IMFS_HARD_LINK] = &IMFS_node_control_hard_link,
-  [IMFS_SYM_LINK] = &IMFS_node_control_sym_link,
   [IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
-  [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
   [IMFS_FIFO] = &IMFS_node_control_enosys
 };
 
diff --git a/cpukit/libfs/src/imfs/imfs_link.c b/cpukit/libfs/src/imfs/imfs_link.c
index 9e25f04..de4701a 100644
--- a/cpukit/libfs/src/imfs/imfs_link.c
+++ b/cpukit/libfs/src/imfs/imfs_link.c
@@ -20,6 +20,8 @@
 
 #include "imfs.h"
 
+static const IMFS_node_control IMFS_node_control_hard_link;
+
 int IMFS_link(
   const rtems_filesystem_location_info_t *parentloc,
   const rtems_filesystem_location_info_t *targetloc,
@@ -43,7 +45,7 @@ int IMFS_link(
    */
   new_node = IMFS_create_node(
     parentloc,
-    IMFS_HARD_LINK,
+    &IMFS_node_control_hard_link,
     name,
     namelen,
     IMFS_STAT_FMT_HARD_LINK | ( S_IRWXU | S_IRWXG | S_IRWXO ),
@@ -129,7 +131,7 @@ static IMFS_jnode_t *IMFS_node_remove_hard_link(
   return node;
 }
 
-const IMFS_node_control IMFS_node_control_hard_link = {
+static const IMFS_node_control IMFS_node_control_hard_link = {
   .handlers = &IMFS_link_handlers,
   .node_size = sizeof(IMFS_link_t),
   .node_initialize = IMFS_node_initialize_hard_link,
diff --git a/cpukit/libfs/src/imfs/imfs_load_tar.c b/cpukit/libfs/src/imfs/imfs_load_tar.c
index c775a10..e6dc499 100644
--- a/cpukit/libfs/src/imfs/imfs_load_tar.c
+++ b/cpukit/libfs/src/imfs/imfs_load_tar.c
@@ -125,7 +125,7 @@ int rtems_tarfs_load(
         IMFS_linearfile_t *linfile = (IMFS_linearfile_t *)
           IMFS_create_node(
             currentloc,
-            IMFS_LINEAR_FILE,
+            &IMFS_node_control_linfile,
             rtems_filesystem_eval_path_get_token( &ctx ),
             rtems_filesystem_eval_path_get_tokenlen( &ctx ),
             (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
diff --git a/cpukit/libfs/src/imfs/imfs_make_generic_node.c b/cpukit/libfs/src/imfs/imfs_make_generic_node.c
index 1daef3e..aeb82b4 100644
--- a/cpukit/libfs/src/imfs/imfs_make_generic_node.c
+++ b/cpukit/libfs/src/imfs/imfs_make_generic_node.c
@@ -82,7 +82,7 @@ int IMFS_make_generic_node(
       rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
 
     if ( IMFS_is_imfs_instance( currentloc ) ) {
-      IMFS_jnode_t *new_node = IMFS_create_node_with_control(
+      IMFS_jnode_t *new_node = IMFS_create_node(
         currentloc,
         node_control,
         rtems_filesystem_eval_path_get_token( &ctx ),
diff --git a/cpukit/libfs/src/imfs/imfs_mknod.c b/cpukit/libfs/src/imfs/imfs_mknod.c
index 9800642..6ff505c 100644
--- a/cpukit/libfs/src/imfs/imfs_mknod.c
+++ b/cpukit/libfs/src/imfs/imfs_mknod.c
@@ -46,12 +46,17 @@ int IMFS_mknod(
 )
 {
   int rv = 0;
-  IMFS_jnode_types_t type;
+  const IMFS_fs_info_t *fs_info = parentloc->mt_entry->fs_info;
   IMFS_jnode_t *new_node;
 
-  type = get_type( mode );
-
-  new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &dev );
+  new_node = IMFS_create_node(
+    parentloc,
+    fs_info->node_controls[ get_type( mode ) ],
+    name,
+    namelen,
+    mode,
+    &dev
+  );
   if ( new_node != NULL ) {
     IMFS_jnode_t *parent = parentloc->node_access;
 
diff --git a/cpukit/libfs/src/imfs/imfs_symlink.c b/cpukit/libfs/src/imfs/imfs_symlink.c
index eaed80b..3ecff3b 100644
--- a/cpukit/libfs/src/imfs/imfs_symlink.c
+++ b/cpukit/libfs/src/imfs/imfs_symlink.c
@@ -23,6 +23,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+static const IMFS_node_control IMFS_node_control_sym_link;
+
 int IMFS_symlink(
   const rtems_filesystem_location_info_t *parentloc,
   const char *name,
@@ -46,7 +48,7 @@ int IMFS_symlink(
    */
   new_node = IMFS_create_node(
     parentloc,
-    IMFS_SYM_LINK,
+    &IMFS_node_control_sym_link,
     name,
     namelen,
     ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
@@ -129,7 +131,7 @@ static void IMFS_node_destroy_sym_link( IMFS_jnode_t *node )
   IMFS_node_destroy_default( node );
 }
 
-const IMFS_node_control IMFS_node_control_sym_link = {
+static const IMFS_node_control IMFS_node_control_sym_link = {
   .handlers = &IMFS_link_handlers,
   .node_size = sizeof(IMFS_sym_link_t),
   .node_initialize = IMFS_node_initialize_sym_link,
diff --git a/cpukit/libfs/src/imfs/miniimfs_init.c b/cpukit/libfs/src/imfs/miniimfs_init.c
index 9e0ca0b..22ad26a 100644
--- a/cpukit/libfs/src/imfs/miniimfs_init.c
+++ b/cpukit/libfs/src/imfs/miniimfs_init.c
@@ -48,10 +48,7 @@ static const IMFS_node_control *const
   IMFS_mini_node_controls [IMFS_TYPE_COUNT] = {
   [IMFS_DIRECTORY] = &IMFS_node_control_directory,
   [IMFS_DEVICE] = &IMFS_node_control_device,
-  [IMFS_HARD_LINK] = &IMFS_node_control_enosys,
-  [IMFS_SYM_LINK] = &IMFS_node_control_enosys,
   [IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
-  [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
   [IMFS_FIFO] = &IMFS_node_control_enosys
 };
 



More information about the vc mailing list