[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