summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-01-28 18:47:19 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-01-28 18:47:19 +0100
commit40d062f5cbd9ef8e6fe7432a4e36aad1923e4c21 (patch)
treeeff6a26d7d11442f39717bddfa4d801f9181b916
parentIMFS: Aggregate link support in dedicated modules (diff)
downloadrtems-40d062f5cbd9ef8e6fe7432a4e36aad1923e4c21.tar.bz2
IMFS: Reduce IMFS node types
Provide only types used by IMFS_mknod().
-rw-r--r--cpukit/libfs/src/imfs/fifoimfs_init.c3
-rw-r--r--cpukit/libfs/src/imfs/imfs.h29
-rw-r--r--cpukit/libfs/src/imfs/imfs_creat.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_init.c3
-rw-r--r--cpukit/libfs/src/imfs/imfs_link.c6
-rw-r--r--cpukit/libfs/src/imfs/imfs_load_tar.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_make_generic_node.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_mknod.c13
-rw-r--r--cpukit/libfs/src/imfs/imfs_symlink.c6
-rw-r--r--cpukit/libfs/src/imfs/miniimfs_init.c3
10 files changed, 21 insertions, 48 deletions
diff --git a/cpukit/libfs/src/imfs/fifoimfs_init.c b/cpukit/libfs/src/imfs/fifoimfs_init.c
index 81041e9902..206c96b5a0 100644
--- a/cpukit/libfs/src/imfs/fifoimfs_init.c
+++ b/cpukit/libfs/src/imfs/fifoimfs_init.c
@@ -52,10 +52,7 @@ static const IMFS_node_control *const
IMFS_fifo_node_controls [IMFS_TYPE_COUNT] = {
[IMFS_DIRECTORY] = &IMFS_node_control_directory,
[IMFS_DEVICE] = &IMFS_node_control_device,
- [IMFS_HARD_LINK] = &IMFS_node_control_hard_link,
- [IMFS_SYM_LINK] = &IMFS_node_control_sym_link,
[IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
- [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
[IMFS_FIFO] = &IMFS_node_control_fifo
};
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
index fe99493530..b8ff29dc70 100644
--- a/cpukit/libfs/src/imfs/imfs.h
+++ b/cpukit/libfs/src/imfs/imfs.h
@@ -100,10 +100,7 @@ typedef block_p *block_ptr;
typedef enum {
IMFS_DIRECTORY,
IMFS_DEVICE,
- IMFS_HARD_LINK,
- IMFS_SYM_LINK,
IMFS_MEMORY_FILE,
- IMFS_LINEAR_FILE,
IMFS_FIFO
} IMFS_jnode_types_t;
@@ -399,8 +396,6 @@ typedef struct {
extern const IMFS_node_control IMFS_node_control_directory;
extern const IMFS_node_control IMFS_node_control_device;
-extern const IMFS_node_control IMFS_node_control_hard_link;
-extern const IMFS_node_control IMFS_node_control_sym_link;
extern const IMFS_node_control IMFS_node_control_memfile;
extern const IMFS_node_control IMFS_node_control_linfile;
extern const IMFS_node_control IMFS_node_control_fifo;
@@ -594,7 +589,7 @@ extern IMFS_jnode_t *IMFS_allocate_node(
* Create an IMFS filesystem node of an arbitrary type that is NOT
* the root directory node.
*/
-extern IMFS_jnode_t *IMFS_create_node_with_control(
+extern IMFS_jnode_t *IMFS_create_node(
const rtems_filesystem_location_info_t *parentloc,
const IMFS_node_control *node_control,
const char *name,
@@ -979,28 +974,6 @@ static inline bool IMFS_is_hard_link( mode_t mode )
return ( mode & S_IFMT ) == IMFS_STAT_FMT_HARD_LINK;
}
-static inline IMFS_jnode_t *IMFS_create_node(
- const rtems_filesystem_location_info_t *parentloc,
- IMFS_jnode_types_t type,
- const char *name,
- size_t namelen,
- mode_t mode,
- void *arg
-)
-{
- const IMFS_fs_info_t *fs_info =
- (const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;
-
- return IMFS_create_node_with_control(
- parentloc,
- fs_info->node_controls [type],
- name,
- namelen,
- mode,
- arg
- );
-}
-
/** @} */
/**
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c
index effb84b40a..e6dceae658 100644
--- a/cpukit/libfs/src/imfs/imfs_creat.c
+++ b/cpukit/libfs/src/imfs/imfs_creat.c
@@ -86,7 +86,7 @@ IMFS_jnode_t *IMFS_allocate_node(
return initialized_node;
}
-IMFS_jnode_t *IMFS_create_node_with_control(
+IMFS_jnode_t *IMFS_create_node(
const rtems_filesystem_location_info_t *parentloc,
const IMFS_node_control *node_control,
const char *name,
diff --git a/cpukit/libfs/src/imfs/imfs_init.c b/cpukit/libfs/src/imfs/imfs_init.c
index 596f81bdda..21b6220134 100644
--- a/cpukit/libfs/src/imfs/imfs_init.c
+++ b/cpukit/libfs/src/imfs/imfs_init.c
@@ -48,10 +48,7 @@ static const IMFS_node_control *const
IMFS_node_controls [IMFS_TYPE_COUNT] = {
[IMFS_DIRECTORY] = &IMFS_node_control_directory,
[IMFS_DEVICE] = &IMFS_node_control_device,
- [IMFS_HARD_LINK] = &IMFS_node_control_hard_link,
- [IMFS_SYM_LINK] = &IMFS_node_control_sym_link,
[IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
- [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
[IMFS_FIFO] = &IMFS_node_control_enosys
};
diff --git a/cpukit/libfs/src/imfs/imfs_link.c b/cpukit/libfs/src/imfs/imfs_link.c
index 9e25f044c4..de4701a215 100644
--- a/cpukit/libfs/src/imfs/imfs_link.c
+++ b/cpukit/libfs/src/imfs/imfs_link.c
@@ -20,6 +20,8 @@
#include "imfs.h"
+static const IMFS_node_control IMFS_node_control_hard_link;
+
int IMFS_link(
const rtems_filesystem_location_info_t *parentloc,
const rtems_filesystem_location_info_t *targetloc,
@@ -43,7 +45,7 @@ int IMFS_link(
*/
new_node = IMFS_create_node(
parentloc,
- IMFS_HARD_LINK,
+ &IMFS_node_control_hard_link,
name,
namelen,
IMFS_STAT_FMT_HARD_LINK | ( S_IRWXU | S_IRWXG | S_IRWXO ),
@@ -129,7 +131,7 @@ static IMFS_jnode_t *IMFS_node_remove_hard_link(
return node;
}
-const IMFS_node_control IMFS_node_control_hard_link = {
+static const IMFS_node_control IMFS_node_control_hard_link = {
.handlers = &IMFS_link_handlers,
.node_size = sizeof(IMFS_link_t),
.node_initialize = IMFS_node_initialize_hard_link,
diff --git a/cpukit/libfs/src/imfs/imfs_load_tar.c b/cpukit/libfs/src/imfs/imfs_load_tar.c
index c775a10878..e6dc499ecf 100644
--- a/cpukit/libfs/src/imfs/imfs_load_tar.c
+++ b/cpukit/libfs/src/imfs/imfs_load_tar.c
@@ -125,7 +125,7 @@ int rtems_tarfs_load(
IMFS_linearfile_t *linfile = (IMFS_linearfile_t *)
IMFS_create_node(
currentloc,
- IMFS_LINEAR_FILE,
+ &IMFS_node_control_linfile,
rtems_filesystem_eval_path_get_token( &ctx ),
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
diff --git a/cpukit/libfs/src/imfs/imfs_make_generic_node.c b/cpukit/libfs/src/imfs/imfs_make_generic_node.c
index 1daef3e215..aeb82b4549 100644
--- a/cpukit/libfs/src/imfs/imfs_make_generic_node.c
+++ b/cpukit/libfs/src/imfs/imfs_make_generic_node.c
@@ -82,7 +82,7 @@ int IMFS_make_generic_node(
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
if ( IMFS_is_imfs_instance( currentloc ) ) {
- IMFS_jnode_t *new_node = IMFS_create_node_with_control(
+ IMFS_jnode_t *new_node = IMFS_create_node(
currentloc,
node_control,
rtems_filesystem_eval_path_get_token( &ctx ),
diff --git a/cpukit/libfs/src/imfs/imfs_mknod.c b/cpukit/libfs/src/imfs/imfs_mknod.c
index 9800642180..6ff505cf9a 100644
--- a/cpukit/libfs/src/imfs/imfs_mknod.c
+++ b/cpukit/libfs/src/imfs/imfs_mknod.c
@@ -46,12 +46,17 @@ int IMFS_mknod(
)
{
int rv = 0;
- IMFS_jnode_types_t type;
+ const IMFS_fs_info_t *fs_info = parentloc->mt_entry->fs_info;
IMFS_jnode_t *new_node;
- type = get_type( mode );
-
- new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &dev );
+ new_node = IMFS_create_node(
+ parentloc,
+ fs_info->node_controls[ get_type( mode ) ],
+ name,
+ namelen,
+ mode,
+ &dev
+ );
if ( new_node != NULL ) {
IMFS_jnode_t *parent = parentloc->node_access;
diff --git a/cpukit/libfs/src/imfs/imfs_symlink.c b/cpukit/libfs/src/imfs/imfs_symlink.c
index eaed80b75d..3ecff3be3e 100644
--- a/cpukit/libfs/src/imfs/imfs_symlink.c
+++ b/cpukit/libfs/src/imfs/imfs_symlink.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include <string.h>
+static const IMFS_node_control IMFS_node_control_sym_link;
+
int IMFS_symlink(
const rtems_filesystem_location_info_t *parentloc,
const char *name,
@@ -46,7 +48,7 @@ int IMFS_symlink(
*/
new_node = IMFS_create_node(
parentloc,
- IMFS_SYM_LINK,
+ &IMFS_node_control_sym_link,
name,
namelen,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
@@ -129,7 +131,7 @@ static void IMFS_node_destroy_sym_link( IMFS_jnode_t *node )
IMFS_node_destroy_default( node );
}
-const IMFS_node_control IMFS_node_control_sym_link = {
+static const IMFS_node_control IMFS_node_control_sym_link = {
.handlers = &IMFS_link_handlers,
.node_size = sizeof(IMFS_sym_link_t),
.node_initialize = IMFS_node_initialize_sym_link,
diff --git a/cpukit/libfs/src/imfs/miniimfs_init.c b/cpukit/libfs/src/imfs/miniimfs_init.c
index 9e0ca0b033..22ad26a034 100644
--- a/cpukit/libfs/src/imfs/miniimfs_init.c
+++ b/cpukit/libfs/src/imfs/miniimfs_init.c
@@ -48,10 +48,7 @@ static const IMFS_node_control *const
IMFS_mini_node_controls [IMFS_TYPE_COUNT] = {
[IMFS_DIRECTORY] = &IMFS_node_control_directory,
[IMFS_DEVICE] = &IMFS_node_control_device,
- [IMFS_HARD_LINK] = &IMFS_node_control_enosys,
- [IMFS_SYM_LINK] = &IMFS_node_control_enosys,
[IMFS_MEMORY_FILE] = &IMFS_node_control_memfile,
- [IMFS_LINEAR_FILE] = &IMFS_node_control_linfile,
[IMFS_FIFO] = &IMFS_node_control_enosys
};