[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