[PATCH 2/5] imfs: Untangle dependencies

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Sep 16 12:23:20 UTC 2016


This helps to use IMFS_make_generic_node() without pulling in the
complete IMFS implementation.
---
 cpukit/libfs/src/imfs/imfs_initsupp.c | 89 ----------------------------------
 cpukit/libfs/src/imfs/imfs_stat.c     | 91 +++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+), 89 deletions(-)

diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c
index 8301831..27b93cb 100644
--- a/cpukit/libfs/src/imfs/imfs_initsupp.c
+++ b/cpukit/libfs/src/imfs/imfs_initsupp.c
@@ -51,52 +51,6 @@ static int IMFS_determine_bytes_per_block(
   return 0;
 }
 
-IMFS_jnode_t *IMFS_initialize_node(
-  IMFS_jnode_t *node,
-  const IMFS_node_control *node_control,
-  const char *name,
-  size_t namelen,
-  mode_t mode,
-  void *arg
-)
-{
-  struct timeval tv;
-
-  if ( namelen > IMFS_NAME_MAX ) {
-    errno = ENAMETOOLONG;
-
-    return NULL;
-  }
-
-  gettimeofday( &tv, 0 );
-
-  /*
-   *  Fill in the basic information
-   */
-  node->name = name;
-  node->namelen = namelen;
-  node->reference_count = 1;
-  node->st_nlink = 1;
-  node->control = node_control;
-
-  /*
-   *  Fill in the mode and permission information for the jnode structure.
-   */
-  node->st_mode = mode;
-  node->st_uid = geteuid();
-  node->st_gid = getegid();
-
-  /*
-   *  Now set all the times.
-   */
-
-  node->stat_atime  = (time_t) tv.tv_sec;
-  node->stat_mtime  = (time_t) tv.tv_sec;
-  node->stat_ctime  = (time_t) tv.tv_sec;
-
-  return (*node_control->node_initialize)( node, arg );
-}
-
 int IMFS_initialize_support(
   rtems_filesystem_mount_table_entry_t *mt_entry,
   const void                           *data
@@ -133,33 +87,6 @@ int IMFS_initialize_support(
   return 0;
 }
 
-int IMFS_node_clone( rtems_filesystem_location_info_t *loc )
-{
-  IMFS_jnode_t *node = loc->node_access;
-
-  ++node->reference_count;
-
-  return 0;
-}
-
-void IMFS_node_destroy( IMFS_jnode_t *node )
-{
-  IMFS_assert( node->reference_count == 0 );
-
-  (*node->control->node_destroy)( node );
-}
-
-void IMFS_node_free( const rtems_filesystem_location_info_t *loc )
-{
-  IMFS_jnode_t *node = loc->node_access;
-
-  --node->reference_count;
-
-  if ( node->reference_count == 0 ) {
-    IMFS_node_destroy( node );
-  }
-}
-
 static IMFS_jnode_t *IMFS_node_initialize_enosys(
   IMFS_jnode_t *node,
   void *arg
@@ -178,22 +105,6 @@ IMFS_jnode_t *IMFS_node_initialize_default(
   return node;
 }
 
-IMFS_jnode_t *IMFS_node_remove_default(
-  IMFS_jnode_t *node
-)
-{
-  return node;
-}
-
-void IMFS_node_destroy_default( IMFS_jnode_t *node )
-{
-  if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) {
-    free( RTEMS_DECONST( char *, node->name ) );
-  }
-
-  free( node );
-}
-
 const IMFS_mknod_control IMFS_mknod_control_enosys = {
   {
     .handlers = &rtems_filesystem_handlers_default,
diff --git a/cpukit/libfs/src/imfs/imfs_stat.c b/cpukit/libfs/src/imfs/imfs_stat.c
index c0298b1..cfbcbf1 100644
--- a/cpukit/libfs/src/imfs/imfs_stat.c
+++ b/cpukit/libfs/src/imfs/imfs_stat.c
@@ -23,6 +23,97 @@
 
 #include "imfs.h"
 
+#include <stdlib.h>
+
+IMFS_jnode_t *IMFS_initialize_node(
+  IMFS_jnode_t *node,
+  const IMFS_node_control *node_control,
+  const char *name,
+  size_t namelen,
+  mode_t mode,
+  void *arg
+)
+{
+  struct timeval tv;
+
+  if ( namelen > IMFS_NAME_MAX ) {
+    errno = ENAMETOOLONG;
+
+    return NULL;
+  }
+
+  gettimeofday( &tv, 0 );
+
+  /*
+   *  Fill in the basic information
+   */
+  node->name = name;
+  node->namelen = namelen;
+  node->reference_count = 1;
+  node->st_nlink = 1;
+  node->control = node_control;
+
+  /*
+   *  Fill in the mode and permission information for the jnode structure.
+   */
+  node->st_mode = mode;
+  node->st_uid = geteuid();
+  node->st_gid = getegid();
+
+  /*
+   *  Now set all the times.
+   */
+
+  node->stat_atime  = (time_t) tv.tv_sec;
+  node->stat_mtime  = (time_t) tv.tv_sec;
+  node->stat_ctime  = (time_t) tv.tv_sec;
+
+  return (*node_control->node_initialize)( node, arg );
+}
+
+int IMFS_node_clone( rtems_filesystem_location_info_t *loc )
+{
+  IMFS_jnode_t *node = loc->node_access;
+
+  ++node->reference_count;
+
+  return 0;
+}
+
+void IMFS_node_destroy( IMFS_jnode_t *node )
+{
+  IMFS_assert( node->reference_count == 0 );
+
+  (*node->control->node_destroy)( node );
+}
+
+void IMFS_node_free( const rtems_filesystem_location_info_t *loc )
+{
+  IMFS_jnode_t *node = loc->node_access;
+
+  --node->reference_count;
+
+  if ( node->reference_count == 0 ) {
+    IMFS_node_destroy( node );
+  }
+}
+
+IMFS_jnode_t *IMFS_node_remove_default(
+  IMFS_jnode_t *node
+)
+{
+  return node;
+}
+
+void IMFS_node_destroy_default( IMFS_jnode_t *node )
+{
+  if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) {
+    free( RTEMS_DECONST( char *, node->name ) );
+  }
+
+  free( node );
+}
+
 int IMFS_stat(
   const rtems_filesystem_location_info_t *loc,
   struct stat *buf
-- 
1.8.4.5




More information about the devel mailing list