[PATCH 2/5] imfs: Untangle dependencies

Gedare Bloom gedare at rtems.org
Sat Sep 17 11:45:03 UTC 2016


Putting these into the same file as stat does not really make sense to
me. can you explain the choice?

On Fri, Sep 16, 2016 at 8:23 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> 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
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list