summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-08 10:25:46 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-08 10:25:46 +0000
commit241f4c96378ff3ca0ad811290c1dac49b571d1cc (patch)
tree5c6c0298594abcbe1c626bbd44c2ed1e74f3ffdc /cpukit/libfs/src/imfs
parent2010-06-08 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-241f4c96378ff3ca0ad811290c1dac49b571d1cc.tar.bz2
2010-06-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libfs/src/imfs/fifoimfs_init.c: New file. * libfs/Makefile.am: Reflect change above. * libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_eval.c, libfs/src/imfs/imfs_init.c, libfs/src/imfs/imfs_initsupp.c, libfs/src/imfs/miniimfs_init.c, libfs/src/pipe/fifo.c, libfs/src/pipe/pipe.c, libfs/src/pipe/pipe.h: Pipe support is now link-time optional. * sapi/include/confdefs.h: Reflect changes above.
Diffstat (limited to 'cpukit/libfs/src/imfs')
-rw-r--r--cpukit/libfs/src/imfs/fifoimfs_init.c61
-rw-r--r--cpukit/libfs/src/imfs/imfs.h10
-rw-r--r--cpukit/libfs/src/imfs/imfs_eval.c2
-rw-r--r--cpukit/libfs/src/imfs/imfs_init.c83
-rw-r--r--cpukit/libfs/src/imfs/imfs_initsupp.c7
-rw-r--r--cpukit/libfs/src/imfs/miniimfs_init.c83
6 files changed, 145 insertions, 101 deletions
diff --git a/cpukit/libfs/src/imfs/fifoimfs_init.c b/cpukit/libfs/src/imfs/fifoimfs_init.c
new file mode 100644
index 0000000000..1104bbb629
--- /dev/null
+++ b/cpukit/libfs/src/imfs/fifoimfs_init.c
@@ -0,0 +1,61 @@
+/**
+ * @file
+ *
+ * @ingroup LibFSIMFS
+ *
+ * @brief IMFS without fifo support initialization.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "imfs.h"
+
+static const rtems_filesystem_operations_table fifoIMFS_ops = {
+ .evalpath_h = IMFS_eval_path,
+ .evalformake_h = IMFS_evaluate_for_make,
+ .link_h = IMFS_link,
+ .unlink_h = IMFS_unlink,
+ .node_type_h = IMFS_node_type,
+ .mknod_h = IMFS_mknod,
+ .chown_h = IMFS_chown,
+ .freenod_h = IMFS_freenodinfo,
+ .mount_h = IMFS_mount,
+ .fsmount_me_h = fifoIMFS_initialize,
+ .unmount_h = IMFS_unmount,
+ .fsunmount_me_h = IMFS_fsunmount,
+ .utime_h = IMFS_utime,
+ .eval_link_h = IMFS_evaluate_link,
+ .symlink_h = IMFS_symlink,
+ .readlink_h = IMFS_readlink,
+ .rename_h = IMFS_rename,
+ .statvfs_h = NULL
+};
+
+int fifoIMFS_initialize(
+ rtems_filesystem_mount_table_entry_t *mt_entry,
+ const void *data
+)
+{
+ return IMFS_initialize_support(
+ mt_entry,
+ &fifoIMFS_ops,
+ &IMFS_memfile_handlers,
+ &IMFS_directory_handlers,
+ &IMFS_fifo_handlers
+ );
+}
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
index b68c795fd3..148889efd9 100644
--- a/cpukit/libfs/src/imfs/imfs.h
+++ b/cpukit/libfs/src/imfs/imfs.h
@@ -223,6 +223,7 @@ typedef struct {
ino_t ino_count;
const rtems_filesystem_file_handlers_r *memfile_handlers;
const rtems_filesystem_file_handlers_r *directory_handlers;
+ const rtems_filesystem_file_handlers_r *fifo_handlers;
} IMFS_fs_info_t;
/*
@@ -247,7 +248,6 @@ extern const rtems_filesystem_file_handlers_r IMFS_link_handlers;
extern const rtems_filesystem_file_handlers_r IMFS_memfile_handlers;
extern const rtems_filesystem_file_handlers_r IMFS_fifo_handlers;
extern const rtems_filesystem_operations_table IMFS_ops;
-extern const rtems_filesystem_operations_table miniIMFS_ops;
extern const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
/*
@@ -259,6 +259,11 @@ extern int IMFS_initialize(
const void *data
);
+extern int fifoIMFS_initialize(
+ rtems_filesystem_mount_table_entry_t *mt_entry,
+ const void *data
+);
+
extern int miniIMFS_initialize(
rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
@@ -268,7 +273,8 @@ extern int IMFS_initialize_support(
rtems_filesystem_mount_table_entry_t *mt_entry,
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *memfile_handlers,
- const rtems_filesystem_file_handlers_r *directory_handlers
+ const rtems_filesystem_file_handlers_r *directory_handlers,
+ const rtems_filesystem_file_handlers_r *fifo_handlers
);
extern int IMFS_fsunmount(
diff --git a/cpukit/libfs/src/imfs/imfs_eval.c b/cpukit/libfs/src/imfs/imfs_eval.c
index b282e7c9a4..d6bf8f8faa 100644
--- a/cpukit/libfs/src/imfs/imfs_eval.c
+++ b/cpukit/libfs/src/imfs/imfs_eval.c
@@ -58,7 +58,7 @@ int IMFS_Set_handlers(
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_FIFO:
- loc->handlers = &IMFS_fifo_handlers;
+ loc->handlers = fs_info->fifo_handlers;
break;
}
diff --git a/cpukit/libfs/src/imfs/imfs_init.c b/cpukit/libfs/src/imfs/imfs_init.c
index c7e6069d35..ebb00278d5 100644
--- a/cpukit/libfs/src/imfs/imfs_init.c
+++ b/cpukit/libfs/src/imfs/imfs_init.c
@@ -1,6 +1,12 @@
-/*
- * IMFS Initialization
+/**
+ * @file
+ *
+ * @ingroup LibFSIMFS
*
+ * @brief IMFS initialization.
+ */
+
+/*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
@@ -15,58 +21,41 @@
#include "config.h"
#endif
-#include <sys/types.h> /* for mkdir */
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include <assert.h>
-
-#include "imfs.h"
#include <rtems/libio_.h>
-#if defined(IMFS_DEBUG)
-#include <stdio.h>
-#endif
-
-/*
- * IMFS file system operations table
- */
+#include "imfs.h"
-const rtems_filesystem_operations_table IMFS_ops = {
- IMFS_eval_path,
- IMFS_evaluate_for_make,
- IMFS_link,
- IMFS_unlink,
- IMFS_node_type,
- IMFS_mknod,
- IMFS_chown,
- IMFS_freenodinfo,
- IMFS_mount,
- IMFS_initialize,
- IMFS_unmount,
- IMFS_fsunmount,
- IMFS_utime,
- IMFS_evaluate_link,
- IMFS_symlink,
- IMFS_readlink,
- IMFS_rename,
- NULL
+const rtems_filesystem_operations_table IMFS_ops = {
+ .evalpath_h = IMFS_eval_path,
+ .evalformake_h = IMFS_evaluate_for_make,
+ .link_h = IMFS_link,
+ .unlink_h = IMFS_unlink,
+ .node_type_h = IMFS_node_type,
+ .mknod_h = IMFS_mknod,
+ .chown_h = IMFS_chown,
+ .freenod_h = IMFS_freenodinfo,
+ .mount_h = IMFS_mount,
+ .fsmount_me_h = IMFS_initialize,
+ .unmount_h = IMFS_unmount,
+ .fsunmount_me_h = IMFS_fsunmount,
+ .utime_h = IMFS_utime,
+ .eval_link_h = IMFS_evaluate_link,
+ .symlink_h = IMFS_symlink,
+ .readlink_h = IMFS_readlink,
+ .rename_h = IMFS_rename,
+ .statvfs_h = NULL
};
-/*
- * IMFS_initialize
- */
-
int IMFS_initialize(
- rtems_filesystem_mount_table_entry_t *temp_mt_entry,
+ rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
)
{
- return IMFS_initialize_support(
- temp_mt_entry,
- &IMFS_ops,
- &IMFS_memfile_handlers,
- &IMFS_directory_handlers
- );
+ return IMFS_initialize_support(
+ mt_entry,
+ &IMFS_ops,
+ &IMFS_memfile_handlers,
+ &IMFS_directory_handlers,
+ &rtems_filesystem_null_handlers /* for fifos */
+ );
}
diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c
index 1bfaf2de8c..519bfd9c18 100644
--- a/cpukit/libfs/src/imfs/imfs_initsupp.c
+++ b/cpukit/libfs/src/imfs/imfs_initsupp.c
@@ -66,7 +66,8 @@ int IMFS_initialize_support(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const rtems_filesystem_operations_table *op_table,
const rtems_filesystem_file_handlers_r *memfile_handlers,
- const rtems_filesystem_file_handlers_r *directory_handlers
+ const rtems_filesystem_file_handlers_r *directory_handlers,
+ const rtems_filesystem_file_handlers_r *fifo_handlers
)
{
static int imfs_instance;
@@ -108,12 +109,10 @@ int IMFS_initialize_support(
fs_info->ino_count = 1;
fs_info->memfile_handlers = memfile_handlers;
fs_info->directory_handlers = directory_handlers;
+ fs_info->fifo_handlers = fifo_handlers;
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
- /* Initialize POSIX FIFO/pipe module */
- rtems_pipe_initialize();
-
return 0;
}
diff --git a/cpukit/libfs/src/imfs/miniimfs_init.c b/cpukit/libfs/src/imfs/miniimfs_init.c
index 6bad5e29a2..c13a071fa5 100644
--- a/cpukit/libfs/src/imfs/miniimfs_init.c
+++ b/cpukit/libfs/src/imfs/miniimfs_init.c
@@ -1,6 +1,12 @@
-/*
- * Mini-IMFS Initialization
+/**
+ * @file
+ *
+ * @ingroup LibFSIMFS
*
+ * @brief Mini-IMFS initialization.
+ */
+
+/*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
@@ -15,58 +21,41 @@
#include "config.h"
#endif
-#include <sys/types.h> /* for mkdir */
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include <assert.h>
-
-#include "imfs.h"
#include <rtems/libio_.h>
-#if defined(IMFS_DEBUG)
-#include <stdio.h>
-#endif
-
-/*
- * miniIMFS file system operations table
- */
+#include "imfs.h"
-const rtems_filesystem_operations_table miniIMFS_ops = {
- IMFS_eval_path,
- IMFS_evaluate_for_make,
- NULL, /* XXX IMFS_link, */
- NULL, /* XXX IMFS_unlink, */
- IMFS_node_type,
- IMFS_mknod,
- NULL, /* XXX IMFS_chown, */
- NULL, /* XXX IMFS_freenodinfo, */
- NULL, /* XXX IMFS_mount, */
- miniIMFS_initialize,
- NULL, /* XXX IMFS_unmount, */
- NULL, /* XXX IMFS_fsunmount, */
- NULL, /* XXX IMFS_utime, */
- NULL, /* XXX IMFS_evaluate_link, */
- NULL, /* XXX IMFS_symlink, */
- NULL, /* XXX IMFS_readlink */
- NULL, /* XXX IMFS_rename */
- NULL /* XXX IMFS_statvfs */
+static const rtems_filesystem_operations_table miniIMFS_ops = {
+ .evalpath_h = IMFS_eval_path,
+ .evalformake_h = IMFS_evaluate_for_make,
+ .link_h = NULL,
+ .unlink_h = NULL,
+ .node_type_h = IMFS_node_type,
+ .mknod_h = IMFS_mknod,
+ .chown_h = NULL,
+ .freenod_h = NULL,
+ .mount_h = IMFS_mount,
+ .fsmount_me_h = miniIMFS_initialize,
+ .unmount_h = NULL,
+ .fsunmount_me_h = NULL,
+ .utime_h = NULL,
+ .eval_link_h = NULL,
+ .symlink_h = NULL,
+ .readlink_h = NULL,
+ .rename_h = NULL,
+ .statvfs_h = NULL
};
-/*
- * miniIMFS_initialize
- */
-
int miniIMFS_initialize(
- rtems_filesystem_mount_table_entry_t *temp_mt_entry,
+ rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
)
{
- return IMFS_initialize_support(
- temp_mt_entry,
- &miniIMFS_ops,
- &rtems_filesystem_null_handlers, /* for memfiles */
- &rtems_filesystem_null_handlers /* for directories */
- );
+ return IMFS_initialize_support(
+ mt_entry,
+ &miniIMFS_ops,
+ &rtems_filesystem_null_handlers, /* for memfiles */
+ &rtems_filesystem_null_handlers, /* for directories */
+ &rtems_filesystem_null_handlers /* for fifos */
+ );
}