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.hu...@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@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel