summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-12-23 18:18:56 +1100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-25 08:45:26 +0100
commit2afb22b7e1ebcbe40373ff7e0efae7d207c655a9 (patch)
tree44759efe9374f13200a97e96d91bd9a2b7e5ce2a /cpukit/libfs
parentMAINTAINERS: Add myself to Write After Approval. (diff)
downloadrtems-2afb22b7e1ebcbe40373ff7e0efae7d207c655a9.tar.bz2
Remove make preinstall
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
Diffstat (limited to 'cpukit/libfs')
-rw-r--r--cpukit/libfs/Makefile.am6
-rw-r--r--cpukit/libfs/preinstall.am24
-rw-r--r--cpukit/libfs/src/devfs/devfs.h255
-rw-r--r--cpukit/libfs/src/dosfs/dosfs.h433
-rw-r--r--cpukit/libfs/src/imfs/imfs.h946
-rw-r--r--cpukit/libfs/src/jffs2/include/rtems/jffs2.h604
-rw-r--r--cpukit/libfs/src/nfsclient/Makefile.am8
-rw-r--r--cpukit/libfs/src/nfsclient/preinstall.am51
-rw-r--r--cpukit/libfs/src/nfsclient/src/librtemsNfs.h234
-rw-r--r--cpukit/libfs/src/pipe/pipe.h133
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h326
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-block-pos.h242
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-block.h344
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-buffer.h283
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-data.h89
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h36
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-dir.h209
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h29
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-file-system.h410
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-file.h416
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-format.h90
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-group.h181
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-inode.h728
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-link.h124
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-mutex.h116
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-shell.h48
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-trace.h135
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs.h38
28 files changed, 10 insertions, 6528 deletions
diff --git a/cpukit/libfs/Makefile.am b/cpukit/libfs/Makefile.am
index 0985b2ffb4..a76fa8ae2d 100644
--- a/cpukit/libfs/Makefile.am
+++ b/cpukit/libfs/Makefile.am
@@ -112,6 +112,11 @@ librfs_a_SOURCES = \
# JFFS2
project_lib_LIBRARIES = libjffs2.a
+
+$(PROJECT_LIB)/libjffs2.a: libjffs2.a
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/libjffs2.a
+TMPINSTALL_FILES = $(PROJECT_LIB)/libjffs2.a
+
libjffs2_a_SOURCES =
libjffs2_a_SOURCES += src/jffs2/src/build.c
libjffs2_a_SOURCES += src/jffs2/src/compat-crc32.c
@@ -139,6 +144,5 @@ libjffs2_a_CPPFLAGS += -D__ECOS
libjffs2_a_CPPFLAGS += '-DKBUILD_MODNAME="JFFS2"'
# ---
-include $(srcdir)/preinstall.am
include $(top_srcdir)/automake/subdirs.am
include $(top_srcdir)/automake/local.am
diff --git a/cpukit/libfs/preinstall.am b/cpukit/libfs/preinstall.am
deleted file mode 100644
index 2aca1ef32f..0000000000
--- a/cpukit/libfs/preinstall.am
+++ /dev/null
@@ -1,24 +0,0 @@
-## Automatically generated by ampolish3 - Do not edit
-
-if AMPOLISH3
-$(srcdir)/preinstall.am: Makefile.am
- $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-endif
-
-PREINSTALL_DIRS =
-DISTCLEANFILES = $(PREINSTALL_DIRS)
-
-all-local: $(TMPINSTALL_FILES)
-
-TMPINSTALL_FILES =
-CLEANFILES = $(TMPINSTALL_FILES)
-
-$(PROJECT_LIB)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_LIB)
- @: > $(PROJECT_LIB)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
-
-$(PROJECT_LIB)/libjffs2.a: libjffs2.a $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/libjffs2.a
-TMPINSTALL_FILES += $(PROJECT_LIB)/libjffs2.a
-
diff --git a/cpukit/libfs/src/devfs/devfs.h b/cpukit/libfs/src/devfs/devfs.h
deleted file mode 100644
index b0a9197eca..0000000000
--- a/cpukit/libfs/src/devfs/devfs.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
-* @file
-*
-* @brief Device Only File System
-*
-* This include file contains all constants and structures associated
-* with the 'device-only' filesystem.
-*/
-
-#ifndef _RTEMS_DEVFS_H
-#define _RTEMS_DEVFS_H
-
-#include <rtems/libio_.h>
-
-/**
- * @defgroup DevFsDeviceTable Device Only File System
- *
- * @ingroup FileSystemTypesAndMount
- *
- * @brief This structure defines the type of device table
- */
-/**@{*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief Per Device Node Control Structure
- *
- * This structure is instanced per device node and contains all information
- * used by this file system implementation to manage that device node.
- */
-typedef struct {
- /** This member points to device name which is not a null-terminated string */
- const char *name;
- /** This member is the name length of a device */
- size_t namelen;
- /** major number of a device */
- rtems_device_major_number major;
- /** minor number of a device */
- rtems_device_minor_number minor;
- /** device creation mode, only device file can be created */
- mode_t mode;
-} devFS_node;
-
-typedef struct {
- devFS_node *nodes;
- size_t count;
-} devFS_data;
-
-/**
- * The following defines the device-only filesystem operating
- * operations.
- */
-extern const rtems_filesystem_operations_table devFS_ops;
-
-/**
- * The following defines the device-only filesystem operating
- * handlers.
- */
-extern const rtems_filesystem_file_handlers_r devFS_file_handlers;
-
-/**
- * @brief Obtain Immutable Pointer to Immutable File System Data
- *
- * This methods returns the immutable file system specific information
- * associated with this file.
- */
-static inline const devFS_data *devFS_get_data(
- const rtems_filesystem_location_info_t *loc
-)
-{
- return (const devFS_data *) loc->mt_entry->immutable_fs_info;
-}
-
-/**
- * @brief Evaluate Path
- */
-extern void devFS_eval_path(
- rtems_filesystem_eval_path_context_t *ctx
-);
-
-/**
- * @brief Maps Open Operation to rtems_io_open
- *
- * This handler maps open operation to rtems_io_open.
- *
- * @param iop This is the RTEMS's internal representation of file.
- * @param pathname a null-terminated string that starts with /dev.
- * @param oflag access flags
- * @param mode access mode
- *
- * @retval the same as open
- */
-extern int devFS_open(
- rtems_libio_t *iop,
- const char *pathname,
- int oflag,
- mode_t mode
-);
-
-
-/**
- * @brief Maps Close Operation to rtems_io_close
- *
- * This handler maps close operation to rtems_io_close.
- *
- * @param iop This is the RTEMS's internal representation of file
- *
- * @retval the same as close
- */
-extern int devFS_close(
- rtems_libio_t *iop
-);
-
-/**
- * @brief Maps Read Operation to rtems_io_read
- *
- * This handler maps read operation to rtems_io_read.
- *
- * @param iop This is the RTEMS's internal representation of file
- * @param buffer memory location to store read data
- * @param count how many bytes to read
- *
- * @retval On successful, this routine returns total bytes read. On error
- * it returns -1 and errno is set to proper value.
- */
-extern ssize_t devFS_read(
- rtems_libio_t *iop,
- void *buffer,
- size_t count
-);
-
-/**
- * @brief Writes Operation to rtems_io_write
- *
- * This handler maps write operation to rtems_io_write.
- *
- * @param iop This is the RTEMS's internal representation of file
- * @param buffer data to be written
- * @param count how many bytes to write
- *
- * @retval On successful, this routine returns total bytes written. On error
- * it returns -1 and errno is set to proper value.
- */
-extern ssize_t devFS_write(
- rtems_libio_t *iop,
- const void *buffer,
- size_t count
-);
-
-/**
- * @brief Maps ioctl Operation to rtems_io_ioctl
- *
- * This handler maps ioctl operation to rtems_io_ioctl.
- *
- * @param iop This is the RTEMS's internal representation of file
- * @param command io control command
- * @param buffer io control parameters
- *
- * @retval On successful, this routine returns total bytes written. On error
- * it returns -1 and errno is set to proper value.
- */
-extern int devFS_ioctl(
- rtems_libio_t *iop,
- ioctl_command_t command,
- void *buffer
-);
-
-/**
- * @brief Gets the Device File Information
- *
- * This handler gets the device file information. This routine only
- * set the following member of struct stat:
- *
- * - st_dev: device number
- * - st_mode: device file creation mode, only two mode are accepted:
- * + S_IFCHR: character device file
- * + S_IFBLK: block device file
- *
- * @param loc contains filesystem access information
- * @param buf buffer to hold the device file's information
- *
- * @retval On successful, this routine returns 0. On error
- * it returns -1 and errno is set to proper value.
- */
-extern int devFS_stat(
- const rtems_filesystem_location_info_t *loc,
- struct stat *buf
-);
-
-/**
- * @brief Creates an item in the main device table.
- *
- * This routine is invoked upon registration of a new device
- * file. It is responsible for creating a item in the main
- * device table. This routine searches the device table in
- * sequential order, when found a empty slot, it fills the slot
- * with proper values.
- *
- * @see rtems_filesystem_mknod_t.
- */
-extern int devFS_mknod(
- const rtems_filesystem_location_info_t *parentloc,
- const char *name,
- size_t namelen,
- mode_t mode,
- dev_t dev
-);
-
-/**
- * @brief Creates the Main Device Table
- *
- * This routine is invoked upon rtems filesystem initialization.
- * It is responsible for creating the main device table,
- * initializing it to a known state, and set device file operation
- * handlers. After this, the device-only filesytem is ready for use
- *
- * @param mt_entry The filesystem mount table entry.
- * @param data Filesystem specific data.
- *
- * @retval upon success, this routine returns 0; otherwise it returns
- * -1 and errno is set to proper value. The only error is when malloc
- * failed, and errno is set to NOMEM.
- */
-extern int devFS_initialize(
- rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data
-);
-
-/**
- * @brief Retrieves and Prints all the Device Registered in System
- *
- * This routine retrieves all the device registered in system, and
- * prints out their detail information. For example, on one system,
- * devFS_show will print out following message:
- *
- * @code
- * /dev/console 0 0
- * /dev/clock 1 0
- * /dev/tty0 0 0
- * /flash 2 0
- * @endcode
- *
- * This routine is intended for debugging, and can be used by shell
- * program to provide user with the system information.
- */
-extern void devFS_Show(void);
-
-#ifdef __cplusplus
-}
-#endif
-/**@}*/
-#endif
-
diff --git a/cpukit/libfs/src/dosfs/dosfs.h b/cpukit/libfs/src/dosfs/dosfs.h
deleted file mode 100644
index 7691ed7e43..0000000000
--- a/cpukit/libfs/src/dosfs/dosfs.h
+++ /dev/null
@@ -1,433 +0,0 @@
-/**
- * @file
- *
- * @brief Application Interface to FAT Filesystem
- *
- * @ingroup DOSFS
- */
-
-/*
- * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
- * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru>
- *
- * Modifications to support UTF-8 in the file system are
- * Copyright (c) 2013 embedded brains GmbH.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_DOSFS_H
-#define _RTEMS_DOSFS_H
-
-#include <rtems.h>
-#include <rtems/libio.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct rtems_dosfs_convert_control rtems_dosfs_convert_control;
-
-/**
- * @brief Converts from UTF-8 into a specific code page.
- *
- * @param[in,out] self The convert control.
- * @param[in] src A well-formed UTF-8 string to be converted.
- * @param[in] src_size The size of the string in bytes (inludes '\\0' if any).
- * @param[out] dst The address the converted string will get copied to.
- * @param[in,out] dst_size The size of the buffer in bytes respectively the
- * number of bytes written to the buffer.
- *
- * @retval 0 Successful operation.
- * @retval EINVAL Conversion was successful, but is not reversible.
- * @retval ENOMEM Conversion failed (possibly due to insufficient buffer size).
- */
-typedef int (*rtems_dosfs_utf8_to_codepage)(
- rtems_dosfs_convert_control *self,
- const uint8_t *src,
- size_t src_size,
- char *dst,
- size_t *dst_size
-);
-
-/**
- * @brief Converts from a specific code page into UTF-8
- *
- * @param[in,out] self The convert control.
- * @param[in] src A well-formed string in code page format.
- * @param[in] src_size The size of the string in bytes (inludes '\\0' if any).
- * @param[out] dst The address the converted string will get copied to.
- * @param[in,out] dst_size The size of the buffer in bytes respectively the
- * number of bytes written to the buffer.
- *
- * @retval 0 Successful operation.
- * @retval EINVAL Conversion was successful, but is not reversible.
- * @retval ENOMEM Conversion failed (possibly due to insufficient buffer size).
- */
-typedef int (*rtems_dosfs_codepage_to_utf8)(
- rtems_dosfs_convert_control *self,
- const char *src,
- size_t src_size,
- uint8_t *dst,
- size_t *dst_size
-);
-
-/**
- * @brief Converts from UTF-8 to UTF-16
- *
- * @param[in,out] self The convert control.
- * @param[in] src A well-formed UTF-8 string to be converted.
- * @param[in] src_size The size of the string in bytes (inludes '\\0' if any).
- * @param[out] dst The address the converted string will get copied to
- * @param[in,out] dst_size The size of the buffer in bytes respectively the
- * number of bytes written to the buffer.
- *
- * @retval 0 Successful operation.
- * @retval EINVAL Conversion was successful, but is not reversible.
- * @retval ENOMEM Conversion failed (possibly due to insufficient buffer size).
- */
-typedef int (*rtems_dosfs_utf8_to_utf16)(
- rtems_dosfs_convert_control *self,
- const uint8_t *src,
- size_t src_size,
- uint16_t *dst,
- size_t *dst_size
-);
-
-/**
- * @brief Converts from UTF-16 to UTF-8.
- *
- * @param[in,out] self The convert control.
- * @param[in] src A well-formed UTF-16 string to be converted.
- * @param[in] src_size The size of the string in bytes (inludes '\\0' if any).
- * @param[out] dst The address the converted string will get copied to.
- * @param[in,out] dst_size The size of the buffer in bytes respectively the
- * number of bytes written to the buffer
- *
- * @retval 0 Successful operation.
- * @retval EINVAL Conversion was successful, but is not reversible.
- * @retval ENOMEM Conversion failed (possibly due to insufficient buffer size).
- */
-typedef int (*rtems_dosfs_utf16_to_utf8)(
- rtems_dosfs_convert_control *self,
- const uint16_t *src,
- size_t src_size,
- uint8_t *dst,
- size_t *dst_size
-);
-
-/**
- * @brief Converts from UTF-8 to Normalized Form Canonical Decomposition.
- *
- * Does canonical decomposition of the UTF-8 string and in addition
- * also converts upper case alphabetic characters to lower case characters
- *
- * @param[in,out] self The convert control.
- * @param[in] src A well-formed UTF-8 string to be normalized and fold.
- * @param[in] src_size The size of the string in bytes (inludes '\\0' if any).
- * @param[out] dst The address the normalized and fold string will get
- * copied to.
- * @param[in,out] dst_size The size of the buffer in bytes respectively the
- * number of bytes written to the buffer.
- *
- * @retval 0 Successful operation.
- * @retval EINVAL Conversion failed.
- * @retval ENOMEM Conversion failed (possibly due to insufficient buffer size).
- * @retval EOVERFLOW Conversion failed.
- * @retval ENOENT Conversion failed.
- */
-typedef int (*rtems_dosfs_utf8_normalize_and_fold)(
- rtems_dosfs_convert_control *self,
- const uint8_t *src,
- size_t src_size,
- uint8_t *dst,
- size_t *dst_size
-);
-
-/**
- * @brief Destroys a convert control structure.
- *
- * @param[in,out] self The convert control for destruction.
- */
-typedef void (*rtems_dosfs_convert_destroy)(
- rtems_dosfs_convert_control *self
-);
-
-/**
- * @brief FAT filesystem convert handler.
- */
-typedef struct {
- rtems_dosfs_utf8_to_codepage utf8_to_codepage;
- rtems_dosfs_codepage_to_utf8 codepage_to_utf8;
- rtems_dosfs_utf8_to_utf16 utf8_to_utf16;
- rtems_dosfs_utf16_to_utf8 utf16_to_utf8;
- rtems_dosfs_utf8_normalize_and_fold utf8_normalize_and_fold;
- rtems_dosfs_convert_destroy destroy;
-} rtems_dosfs_convert_handler;
-
-typedef struct {
- void *data;
- size_t size;
-} rtems_dosfs_buffer;
-
-/**
- * @brief FAT filesystem convert control.
- *
- * Short file names are stored in the code page format. Long file names are
- * stored as little-endian UTF-16. The convert control determines the format
- * conversions to and from the POSIX file name strings.
- */
-struct rtems_dosfs_convert_control {
- const rtems_dosfs_convert_handler *handler;
- rtems_dosfs_buffer buffer;
-};
-
-/**
- * @defgroup DOSFS FAT Filesystem Support
- *
- * @ingroup FileSystemTypesAndMount
- *
- * @brief FAT file system configuration support, format and mount options.
- *
- * A block device can be formatted with a FAT file system with the
- * msdos_format() function.
- *
- * The FAT file system mount operation can be controlled with FAT file system
- * specific mount options, see @ref rtems_dosfs_mount_options.
- *
- * @{
- */
-
-/**
- * @brief Semaphore count per FAT filesystem instance.
- *
- * This can be used for system configuration via <rtems/confdefs.h>.
- */
-#define RTEMS_DOSFS_SEMAPHORES_PER_INSTANCE 1
-
-/**
- * @brief FAT filesystem mount options.
- */
-typedef struct {
- /**
- * @brief Converter implementation for new file system instance.
- *
- * Before converters have been added to the RTEMS implementation of the FAT
- * file system, the implementation was:
- * - Short names were saved in code page format (as is still the case).
- * - Long names were not saved in UTF-16 format as mandated by the FAT file
- * system specification. Instead the character in the local encoding was
- * stored to the low byte directly and the high byte was set to zero.
- *
- * There are a few compatibility issues due to a non-standard conform
- * implementation of the FAT file system before the UTF-8 support was added.
- * These following issues affect the default converter and the UTF-8
- * converter:
- * - Before UTF-8 support was added, it was possible to create files with the
- * the same short name in single case and mixed case in a directory. It
- * was for example possible to have files "ABC" and "aBc" in a single
- * directory. Now this bug is fixed.
- * - Before UTF-8 support was added, it was possible to create files with a
- * name length of slightly more than 255 characters. Now the
- * implementation adheres exactly to the 255 character limit.
- * - Long file names saved before UTF-8 support was added could contain
- * non-ASCII characters in the low byte which was saved for a long name
- * character. With the default converter this means such files can be read
- * only by their short file name. With the UTF-8 converter file names will
- * be read correctly as long as the characters written with the old
- * implementation were Latin-1 characters.
- *
- * The following sample code demonstrates how to mount a file
- * system with UTF-8 support:
- * @code
- * #include <errno.h>
- * #include <assert.h>
- * #include <rtems/dosfs.h>
- * #include <rtems/libio.h>
- *
- * static int mount_with_utf8(
- * const char *device_file,
- * const char *mount_point
- * )
- * {
- * rtems_dosfs_convert_control *convert_ctrl;
- * int rv;
- *
- * convert_ctrl = rtems_dosfs_create_utf8_converter( "CP850" );
- *
- * if ( convert_ctrl != NULL ) {
- * rtems_dosfs_mount_options mount_opts;
- *
- * memset( &mount_opts, 0, sizeof( mount_opts ) );
- * mount_opts.converter = convert_ctrl;
- *
- * rv = mount_and_make_target_path(
- * device_file,
- * mount_point,
- * RTEMS_FILESYSTEM_TYPE_DOSFS,
- * RTEMS_FILESYSTEM_READ_WRITE,
- * &mount_opts
- * );
- * } else {
- * rv = -1;
- * errno = ENOMEM;
- * }
- *
- * return rv;
- * }
- * @endcode
- *
- * In case you do not want UTF-8 support, you can simply pass a NULL pointer
- * to mount_and_make_target_path() respectively to mount() instead of the
- * mount_opts address.
- *
- * @see rtems_dosfs_create_default_converter() and
- * rtems_dosfs_create_utf8_converter().
- */
- rtems_dosfs_convert_control *converter;
-} rtems_dosfs_mount_options;
-
-/**
- * @brief Allocates and initializes a default converter.
- *
- * This default converter will accept only POSIX file names with pure ASCII
- * characters. This largely corresponds to the file name handling before the
- * optional UTF-8 support was added to the RTEMS implementation of the FAT file
- * system. This handling is mostly backwards compatible to the previous RTEMS
- * implementation of the FAT file system.
- *
- * For backwards compatibility and the previous RTEMS implementation of the FAT
- * file system please see also @ref rtems_dosfs_mount_options and mount().
- *
- * @retval NULL Something failed.
- * @retval other Pointer to initialized converter.
- */
-rtems_dosfs_convert_control *rtems_dosfs_create_default_converter(void);
-
-/**
- * @brief Allocates and initializes a UTF-8 converter.
- *
- * This converter will assume that all file names passed to POSIX file handling
- * methods are UTF-8 strings and will convert them to the selected code page
- * for short file names and to UTF-16 for long file names. This conversion
- * will be done during reading and writing. These conversions correspond to
- * the specification of the FAT file system. This handling is mostly backwards
- * compatible to the previous RTEMS implementation of the FAT file system.
- *
- * For backwards compatibility and the previous RTEMS implementation of the FAT
- * file system please see also @ref rtems_dosfs_mount_options and mount().
- *
- * One possible issue with this converter is: When reading file names which
- * have been created with other implementations of the FAT file system, it can
- * happen that during the conversion to UTF-8 a long file name becomes longer
- * and exceeds the 255 bytes limit. In such a case only the short file name
- * will get read.
- *
- * @param[in] codepage The iconv() identification string for the used code
- * page.
- *
- * @retval NULL Something failed.
- * @retval other Pointer to initialized converter.
- */
-rtems_dosfs_convert_control *rtems_dosfs_create_utf8_converter(
- const char *codepage
-);
-
-#define MSDOS_FMT_INFO_LEVEL_NONE (0)
-#define MSDOS_FMT_INFO_LEVEL_INFO (1)
-#define MSDOS_FMT_INFO_LEVEL_DETAIL (2)
-#define MSDOS_FMT_INFO_LEVEL_DEBUG (3)
-
-/**
- * @brief FAT file system format request parameters.
- */
-typedef struct {
- /**
- * @brief OEM name string or NULL.
- */
- const char *OEMName;
-
- /**
- * @brief Volume label string or NULL.
- */
- const char *VolLabel;
-
- /**
- * @brief Sectors per cluster hint.
- *
- * The format procedure may choose another value. Use 0 as default value.
- */
- uint32_t sectors_per_cluster;
-
- /**
- * @brief Number of FATs hint.
- *
- * Use 0 as default value.
- */
- uint32_t fat_num;
-
- /**
- * @brief Minimum files in root directory for FAT12 and FAT16.
- *
- * The format procedure may choose a greater value. Use 0 as default value.
- */
- uint32_t files_per_root_dir;
-
- /**
- * @brief Media code.
- *
- * Use 0 as default value. The default media code is 0xf8.
- */
- uint8_t media;
-
- /**
- * @brief Quick format.
- *
- * If set to true, then do not clear data sectors to zero.
- */
- bool quick_format;
-
- /**
- * @brief Do not align FAT, data cluster, and root directory to a cluster
- * boundary.
- */
- bool skip_alignment;
-
- /**
- * @brief Synchronize device after write operations.
- */
- bool sync_device;
-
- /**
- * @brief The amount of info to output.
- */
- int info_level;
-} msdos_format_request_param_t;
-
-/**
- * @brief Formats a block device with a FAT file system.
- *
- * @param[in] devname The block device path.
- * @param[in] rqdata The FAT file system format request data. Use NULL for
- * default parameters.
- *
- * @retval 0 Successful operation.
- * @retval -1 An error occurred. The @c errno indicates the error.
- */
-int msdos_format (
- const char *devname,
- const msdos_format_request_param_t *rqdata
-);
-
-/** @} */
-
-int rtems_dosfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
deleted file mode 100644
index fe3c5b12a9..0000000000
--- a/cpukit/libfs/src/imfs/imfs.h
+++ /dev/null
@@ -1,946 +0,0 @@
-/**
- * @file
- *
- * @brief Header File for the In-Memory File System
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_IMFS_H
-#define _RTEMS_IMFS_H
-
-#include <limits.h>
-
-#include <rtems/libio_.h>
-#include <rtems/pipe.h>
-
-/**
- * @brief In-Memory File System Support.
- *
- * @defgroup IMFS In-Memory File System Support
- *
- * @ingroup FileSystemTypesAndMount
- */
-/**@{*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Data types
- */
-
-struct IMFS_jnode_tt;
-typedef struct IMFS_jnode_tt IMFS_jnode_t;
-
-/**
- * IMFS "memfile" information
- *
- * The data structure for the in-memory "memfiles" is based on classic UNIX.
- *
- * block_ptr is a pointer to a block of IMFS_MEMFILE_BYTES_PER_BLOCK in
- * length which could be data or a table of pointers to blocks.
- *
- * Setting IMFS_MEMFILE_BYTES_PER_BLOCK to different values has a significant
- * impact on the maximum file size supported as well as the amount of
- * memory wasted due to internal file fragmentation. The following
- * is a list of maximum file sizes based on various settings
- *
- * @code
- * max_filesize with blocks of 16 is 1,328
- * max_filesize with blocks of 32 is 18,656
- * max_filesize with blocks of 64 is 279,488
- * max_filesize with blocks of 128 is 4,329,344
- * max_filesize with blocks of 256 is 68,173,568
- * max_filesize with blocks of 512 is 1,082,195,456
- * @endcode
- */
-#define IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK 128
- extern int imfs_rq_memfile_bytes_per_block;
- extern int imfs_memfile_bytes_per_block;
-
-#define IMFS_MEMFILE_BYTES_PER_BLOCK imfs_memfile_bytes_per_block
-#define IMFS_MEMFILE_BLOCK_SLOTS \
- (IMFS_MEMFILE_BYTES_PER_BLOCK / sizeof(void *))
-
-typedef uint8_t *block_p;
-typedef block_p *block_ptr;
-
-/*
- * Important block numbers for "memfiles"
- */
-#define FIRST_INDIRECT (0)
-#define LAST_INDIRECT (IMFS_MEMFILE_BLOCK_SLOTS - 1)
-
-#define FIRST_DOUBLY_INDIRECT (LAST_INDIRECT + 1)
-#define LAST_DOUBLY_INDIRECT \
- (LAST_INDIRECT + \
- (IMFS_MEMFILE_BLOCK_SLOTS * IMFS_MEMFILE_BLOCK_SLOTS))
-
-#define FIRST_TRIPLY_INDIRECT (LAST_DOUBLY_INDIRECT + 1)
-#define LAST_TRIPLY_INDIRECT \
- (LAST_DOUBLY_INDIRECT +\
- (IMFS_MEMFILE_BLOCK_SLOTS * \
- IMFS_MEMFILE_BLOCK_SLOTS * IMFS_MEMFILE_BLOCK_SLOTS))
-
-#define IMFS_MEMFILE_MAXIMUM_SIZE \
- (LAST_TRIPLY_INDIRECT * IMFS_MEMFILE_BYTES_PER_BLOCK)
-
-/** @} */
-
-/**
- * @addtogroup IMFSGenericNodes
- */
-/**@{*/
-
-/**
- * @brief Initializes an IMFS node.
- *
- * @param[in] node The IMFS node.
- * @param[in] arg The user provided argument pointer. It may contain node
- * specific initialization information.
- *
- * @retval node Successful operation.
- * @retval NULL An error occurred. The @c errno indicates the error. This
- * will abort the make operation.
- *
- * @see IMFS_node_control, IMFS_node_initialize_default(), and
- * IMFS_node_initialize_generic().
- */
-typedef IMFS_jnode_t *(*IMFS_node_control_initialize)(
- IMFS_jnode_t *node,
- void *arg
-);
-
-/**
- * @brief Returns the node and does nothing else.
- *
- * @param[in] node The IMFS node.
- * @param[in] arg The user provided argument pointer. It is not used.
- *
- * @retval node Returns always the node passed as parameter.
- *
- * @see IMFS_node_control.
- */
-IMFS_jnode_t *IMFS_node_initialize_default(
- IMFS_jnode_t *node,
- void *arg
-);
-
-IMFS_jnode_t *IMFS_node_initialize_directory(
- IMFS_jnode_t *node,
- void *arg
-);
-
-/**
- * @brief Returns the node and sets the generic node context.
- *
- * @param[in] node The IMFS node.
- * @param[in] arg The user provided argument pointer. It must contain the
- * generic context.
- *
- * @retval node Returns always the node passed as parameter.
- *
- * @see IMFS_node_control.
- */
-IMFS_jnode_t *IMFS_node_initialize_generic(
- IMFS_jnode_t *node,
- void *arg
-);
-
-/**
- * @brief Prepares the removal of an IMFS node from its parent directory.
- *
- * @param[in] node The IMFS node.
- *
- * @retval node Successful operation.
- * @retval NULL An error occurred. The @c errno indicates the error. This
- * will abort the removal operation.
- *
- * @see IMFS_node_control and IMFS_node_remove_default().
- */
-typedef IMFS_jnode_t *(*IMFS_node_control_remove)(
- IMFS_jnode_t *node
-);
-
-/**
- * @brief Returns the node and does nothing else.
- *
- * @param[in] node The IMFS node.
- *
- * @retval node Returns always the node passed as parameter.
- *
- * @see IMFS_node_control.
- */
-IMFS_jnode_t *IMFS_node_remove_default(
- IMFS_jnode_t *node
-);
-
-IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node );
-
-/**
- * @brief Destroys an IMFS node.
- *
- * @param[in] node The IMFS node.
- *
- * @see IMFS_node_control and IMFS_node_destroy_default().
- */
-typedef void (*IMFS_node_control_destroy)( IMFS_jnode_t *node );
-
-/**
- * @brief Frees the node.
- *
- * @param[in] node The IMFS node.
- *
- * @see IMFS_node_control.
- */
-void IMFS_node_destroy_default( IMFS_jnode_t *node );
-
-/**
- * @brief IMFS node control.
- */
-typedef struct {
- const rtems_filesystem_file_handlers_r *handlers;
- IMFS_node_control_initialize node_initialize;
- IMFS_node_control_remove node_remove;
- IMFS_node_control_destroy node_destroy;
-} IMFS_node_control;
-
-typedef struct {
- IMFS_node_control node_control;
- size_t node_size;
-} IMFS_mknod_control;
-
-/** @} */
-
-/**
- * @addtogroup IMFS
- */
-/**@{*/
-
-/*
- * Maximum length of a "basename" of an IMFS file/node.
- */
-
-#define IMFS_NAME_MAX _POSIX_NAME_MAX
-
-/*
-
- * The control structure for an IMFS jnode.
- */
-
-struct IMFS_jnode_tt {
- rtems_chain_node Node; /* for chaining them together */
- IMFS_jnode_t *Parent; /* Parent node */
- const char *name; /* "basename" (not \0 terminated) */
- uint16_t namelen; /* Length of "basename" */
- uint16_t flags; /* Node flags */
- mode_t st_mode; /* File mode */
- unsigned short reference_count;
- nlink_t st_nlink; /* Link count */
-
- uid_t st_uid; /* User ID of owner */
- gid_t st_gid; /* Group ID of owner */
-
- time_t stat_atime; /* Time of last access */
- time_t stat_mtime; /* Time of last modification */
- time_t stat_ctime; /* Time of last status change */
- const IMFS_node_control *control;
-};
-
-#define IMFS_NODE_FLAG_NAME_ALLOCATED 0x1
-
-typedef struct {
- IMFS_jnode_t Node;
- rtems_chain_control Entries;
- rtems_filesystem_mount_table_entry_t *mt_fs;
-} IMFS_directory_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- rtems_device_major_number major;
- rtems_device_minor_number minor;
-} IMFS_device_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- IMFS_jnode_t *link_node;
-} IMFS_link_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- char *name;
-} IMFS_sym_link_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- size_t size; /* size of file in bytes */
-} IMFS_filebase_t;
-
-typedef struct {
- IMFS_filebase_t File;
- block_ptr indirect; /* array of 128 data blocks pointers */
- block_ptr doubly_indirect; /* 128 indirect blocks */
- block_ptr triply_indirect; /* 128 doubly indirect blocks */
-} IMFS_memfile_t;
-
-typedef struct {
- IMFS_filebase_t File;
- block_p direct; /* pointer to file image */
-} IMFS_linearfile_t;
-
-/* Support copy on write for linear files */
-typedef union {
- IMFS_jnode_t Node;
- IMFS_filebase_t File;
- IMFS_memfile_t Memfile;
- IMFS_linearfile_t Linearfile;
-} IMFS_file_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- pipe_control_t *pipe;
-} IMFS_fifo_t;
-
-typedef struct {
- IMFS_jnode_t Node;
- void *context;
-} IMFS_generic_t;
-
-static inline IMFS_directory_t *IMFS_iop_to_directory(
- const rtems_libio_t *iop
-)
-{
- return (IMFS_directory_t *) iop->pathinfo.node_access;
-}
-
-static inline IMFS_device_t *IMFS_iop_to_device( const rtems_libio_t *iop )
-{
- return (IMFS_device_t *) iop->pathinfo.node_access;
-}
-
-static inline IMFS_file_t *IMFS_iop_to_file( const rtems_libio_t *iop )
-{
- return (IMFS_file_t *) iop->pathinfo.node_access;
-}
-
-static inline IMFS_memfile_t *IMFS_iop_to_memfile( const rtems_libio_t *iop )
-{
- return (IMFS_memfile_t *) iop->pathinfo.node_access;
-}
-
-static inline void IMFS_update_atime( IMFS_jnode_t *jnode )
-{
- struct timeval now;
-
- gettimeofday( &now, 0 );
-
- jnode->stat_atime = now.tv_sec;
-}
-
-static inline void IMFS_update_mtime( IMFS_jnode_t *jnode )
-{
- struct timeval now;
-
- gettimeofday( &now, 0 );
-
- jnode->stat_mtime = now.tv_sec;
-}
-
-static inline void IMFS_update_ctime( IMFS_jnode_t *jnode )
-{
- struct timeval now;
-
- gettimeofday( &now, 0 );
-
- jnode->stat_ctime = now.tv_sec;
-}
-
-static inline void IMFS_mtime_ctime_update( IMFS_jnode_t *jnode )
-{
- struct timeval now;
-
- gettimeofday( &now, 0 );
-
- jnode->stat_mtime = now.tv_sec;
- jnode->stat_ctime = now.tv_sec;
-}
-
-typedef struct {
- const IMFS_mknod_control *directory;
- const IMFS_mknod_control *device;
- const IMFS_mknod_control *file;
- const IMFS_mknod_control *fifo;
-} IMFS_mknod_controls;
-
-typedef struct {
- IMFS_directory_t Root_directory;
- const IMFS_mknod_controls *mknod_controls;
-} IMFS_fs_info_t;
-
-typedef struct {
- IMFS_fs_info_t *fs_info;
- const rtems_filesystem_operations_table *ops;
- const IMFS_mknod_controls *mknod_controls;
-} IMFS_mount_data;
-
-/*
- * Shared Data
- */
-
-extern const IMFS_mknod_control IMFS_mknod_control_dir_default;
-extern const IMFS_mknod_control IMFS_mknod_control_dir_minimal;
-extern const IMFS_mknod_control IMFS_mknod_control_device;
-extern const IMFS_mknod_control IMFS_mknod_control_memfile;
-extern const IMFS_node_control IMFS_node_control_linfile;
-extern const IMFS_mknod_control IMFS_mknod_control_fifo;
-extern const IMFS_mknod_control IMFS_mknod_control_enosys;
-
-extern const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
-
-/*
- * Routines
- */
-
-extern int IMFS_initialize(
- rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data
-);
-
-extern int IMFS_initialize_support(
- rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data
-);
-
-/**
- * @brief Unmount this instance of IMFS.
- */
-extern void IMFS_fsunmount(
- rtems_filesystem_mount_table_entry_t *mt_entry
-);
-
-/**
- * @brief RTEMS load tarfs.
- *
- * This file implements the "mount" procedure for tar-based IMFS
- * extensions. The TAR is not actually mounted under the IMFS.
- * Directories from the TAR file are created as usual in the IMFS.
- * File entries are created as IMFS_LINEAR_FILE nodes with their nods
- * pointing to addresses in the TAR image.
- *
- * Here we create the mountpoint directory and load the tarfs at
- * that node. Once the IMFS has been mounted, we work through the
- * tar image and perform as follows:
- * - For directories, simply call mkdir(). The IMFS creates nodes as
- * needed.
- * - For files, we make our own calls to IMFS eval_for_make and
- * create_node.
- *
- * TAR file format:
- *
- * @code
- * Offset Length Contents
- * 0 100 bytes File name ('\0' terminated, 99 maxmum length)
- * 100 8 bytes File mode (in octal ascii)
- * 108 8 bytes User ID (in octal ascii)
- * 116 8 bytes Group ID (in octal ascii)
- * 124 12 bytes File size (s) (in octal ascii)
- * 136 12 bytes Modify time (in octal ascii)
- * 148 8 bytes Header checksum (in octal ascii)
- * 156 1 bytes Link flag
- * 157 100 bytes Linkname ('\0' terminated, 99 maxmum length)
- * 257 8 bytes Magic PAX ("ustar\0" + 2 bytes padding)
- * 257 8 bytes Magic GNU tar ("ustar \0")
- * 265 32 bytes User name ('\0' terminated, 31 maxmum length)
- * 297 32 bytes Group name ('\0' terminated, 31 maxmum length)
- * 329 8 bytes Major device ID (in octal ascii)
- * 337 8 bytes Minor device ID (in octal ascii)
- * 345 167 bytes Padding
- * 512 (s+p) bytes File contents (s+p) := (((s) + 511) & ~511),
- * round up to 512 bytes
- * @endcode
- *
- * Checksum:
- * @code
- * int i, sum;
- * char *header = tar_header_pointer;
- *
- * sum = 0;
- * for (i = 0; i < 512; i++)
- * sum += 0xFF & header[i];
- * @endcode
- */
-extern int rtems_tarfs_load(
- const char *mountpoint,
- uint8_t *tar_image,
- size_t tar_size
-);
-
-/**
- * @brief Destroy an IMFS node.
- */
-extern void IMFS_node_destroy( IMFS_jnode_t *node );
-
-/**
- * @brief Clone an IMFS node.
- */
-extern int IMFS_node_clone( rtems_filesystem_location_info_t *loc );
-
-/**
- * @brief Free an IMFS node.
- */
-extern void IMFS_node_free( const rtems_filesystem_location_info_t *loc );
-
-/**
- * @brief Perform a status processing for the IMFS.
- *
- * This routine provides a stat for the IMFS file system.
- */
-extern int IMFS_stat(
- const rtems_filesystem_location_info_t *loc,
- struct stat *buf
-);
-
-extern int IMFS_stat_file(
- const rtems_filesystem_location_info_t *loc,
- struct stat *buf
-);
-
-/**
- * @brief IMFS evaluation node support.
- */
-extern void IMFS_eval_path(
- rtems_filesystem_eval_path_context_t *ctx
-);
-
-/**
- * @brief Create a new IMFS link node.
- *
- * The following rouine creates a new link node under parent with the
- * name given in name. The link node is set to point to the node at
- * to_loc.
- */
-extern int IMFS_link(
- const rtems_filesystem_location_info_t *parentloc,
- const rtems_filesystem_location_info_t *targetloc,
- const char *name,
- size_t namelen
-);
-
-/**
- * @brief Change the owner of IMFS.
- *
- * This routine is the implementation of the chown() system
- * call for the IMFS.
- */
-extern int IMFS_chown(
- const rtems_filesystem_location_info_t *loc,
- uid_t owner,
- gid_t group
-);
-
-/**
- * @brief Create an IMFS node.
- *
- * Routine to create a node in the IMFS file system.
- */
-extern int IMFS_mknod(
- const rtems_filesystem_location_info_t *parentloc,
- const char *name,
- size_t namelen,
- mode_t mode,
- dev_t dev
-);
-
-extern 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
-);
-
-/**
- * @brief Create an IMFS node.
- *
- * Create an IMFS filesystem node of an arbitrary type that is NOT
- * the root directory node.
- */
-extern IMFS_jnode_t *IMFS_create_node(
- const rtems_filesystem_location_info_t *parentloc,
- const IMFS_node_control *node_control,
- size_t node_size,
- const char *name,
- size_t namelen,
- mode_t mode,
- void *arg
-);
-
-static inline bool IMFS_is_imfs_instance(
- const rtems_filesystem_location_info_t *loc
-)
-{
- return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;
-}
-
-/** @} */
-
-/**
- * @defgroup IMFSGenericNodes IMFS Generic Nodes
- *
- * @ingroup LibIO
- *
- * @brief Generic nodes are an alternative to standard drivers in RTEMS.
- *
- * The handlers of a generic node are called with less overhead compared to the
- * standard driver operations. The usage of file system node handlers enable
- * more features like support for fsync() and fdatasync(). The generic nodes
- * use the reference counting of the IMFS. This provides automatic node
- * destruction when the last reference vanishes.
- *
- * @{
- */
-
-/**
- * @brief Initializer for a generic node control.
- *
- * @param[in] handlers The file system node handlers.
- * @param[in] init The node initialization method.
- * @param[in] destroy The node destruction method.
- */
-#define IMFS_GENERIC_INITIALIZER( handlers, init, destroy ) \
- { \
- ( handlers ), \
- ( init ), \
- IMFS_node_remove_default, \
- ( destroy ) \
- }
-
-/**
- * @brief Makes a generic IMFS node.
- *
- * @param[in] path The path to the new generic IMFS node.
- * @param[in] mode The node mode.
- * @param[in] node_control The node control.
- * @param[in] context The node control handler context.
- *
- * @retval 0 Successful operation.
- * @retval -1 An error occurred. The @c errno indicates the error.
- *
- * @code
- * #include <sys/stat.h>
- * #include <assert.h>
- * #include <fcntl.h>
- *
- * #include <rtems/imfs.h>
- *
- * static const rtems_filesystem_file_handlers_r some_node_handlers = {
- * ...
- * };
- *
- * static IMFS_jnode_t *some_node_init(IMFS_jnode_t *node, void *arg)
- * {
- * void *context;
- *
- * node = IMFS_node_initialize_generic(node, arg);
- * context = IMFS_generic_get_context_by_node(node);
- *
- * return node;
- * }
- *
- * static void some_node_destroy(IMFS_jnode_t *node)
- * {
- * void *context = IMFS_generic_get_context_by_node(node);
- *
- * IMFS_node_destroy_default(node);
- * }
- *
- * static const IMFS_node_control some_node_control = IMFS_GENERIC_INITIALIZER(
- * &some_node_handlers,
- * some_node_init,
- * some_node_destroy
- * );
- *
- * void example(void *some_node_context)
- * {
- * int rv;
- *
- * rv = IMFS_make_generic_node(
- * "/path/to/some/generic/node",
- * S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO,
- * &some_node_control,
- * some_node_context
- * );
- * assert(rv == 0);
- * }
- * @endcode
- */
-extern int IMFS_make_generic_node(
- const char *path,
- mode_t mode,
- const IMFS_node_control *node_control,
- void *context
-);
-
-/** @} */
-
-/**
- * @addtogroup IMFS
- */
-/**@{*/
-
-/**
- * @brief Mount an IMFS.
- */
-extern int IMFS_mount(
- rtems_filesystem_mount_table_entry_t *mt_entry /* IN */
-);
-
-/**
- * @brief Unmount an IMFS.
- */
-extern int IMFS_unmount(
- rtems_filesystem_mount_table_entry_t *mt_entry /* IN */
-);
-
-/**
- * @name IMFS Memory File Handlers
- *
- * This section contains the set of handlers used to process operations on
- * IMFS memory file nodes. The memory files are created in memory using
- * malloc'ed memory. Thus any data stored in one of these files is lost
- * at system shutdown unless special arrangements to copy the data to
- * some type of non-volailte storage are made by the application.
- */
-/**@{*/
-
-extern ssize_t IMFS_memfile_write(
- IMFS_memfile_t *memfile,
- off_t start,
- const unsigned char *source,
- unsigned int length
-);
-
-/** @} */
-
-/**
- * @name IMFS Device Node Handlers
- *
- * This section contains the set of handlers used to map operations on
- * IMFS device nodes onto calls to the RTEMS Classic API IO Manager.
- */
-/**@{*/
-
-extern int device_open(
- rtems_libio_t *iop, /* IN */
- const char *pathname, /* IN */
- int oflag, /* IN */
- mode_t mode /* IN */
-);
-
-extern int device_close(
- rtems_libio_t *iop /* IN */
-);
-
-extern ssize_t device_read(
- rtems_libio_t *iop, /* IN */
- void *buffer, /* IN */
- size_t count /* IN */
-);
-
-extern ssize_t device_write(
- rtems_libio_t *iop, /* IN */
- const void *buffer, /* IN */
- size_t count /* IN */
-);
-
-extern int device_ioctl(
- rtems_libio_t *iop,
- ioctl_command_t command,
- void *buffer
-);
-
-extern int device_ftruncate(
- rtems_libio_t *iop, /* IN */
- off_t length /* IN */
-);
-
-/** @} */
-
-/**
- * @brief Set IMFS file access and modification times.
- *
- *
- * This routine is the implementation of the utime() system
- * call for the IMFS.
- */
-extern int IMFS_utime(
- const rtems_filesystem_location_info_t *loc,
- time_t actime,
- time_t modtime
-);
-
-/**
- * @brief Change the IMFS file mode.
- */
-extern int IMFS_fchmod(
- const rtems_filesystem_location_info_t *loc,
- mode_t mode
-);
-
-/**
- * @brief Create a new IMFS symbolic link node.
- *
- * The following rouine creates a new symbolic link node under parent
- * with the name given in name. The node is set to point to the node at
- * to_loc.
- */
-extern int IMFS_symlink(
- const rtems_filesystem_location_info_t *parentloc,
- const char *name,
- size_t namelen,
- const char *target
-);
-
-/**
- * @brief Put IMFS symbolic link into buffer.
- *
- * The following rouine puts the symbolic links destination name into
- * buff.
- *
- */
-extern ssize_t IMFS_readlink(
- const rtems_filesystem_location_info_t *loc,
- char *buf,
- size_t bufsize
-);
-
-/**
- * @brief Rename the IMFS.
- *
- * The following rouine creates a new link node under parent with the
- * name given in name and removes the old.
- */
-extern int IMFS_rename(
- const rtems_filesystem_location_info_t *oldparentloc,
- const rtems_filesystem_location_info_t *oldloc,
- const rtems_filesystem_location_info_t *newparentloc,
- const char *name,
- size_t namelen
-);
-/**
- * @brief IMFS node removal handler.
- *
- * This file contains the handler used to remove a node when a file type
- * does not require special actions.
- */
-extern int IMFS_rmnod(
- const rtems_filesystem_location_info_t *parentloc,
- const rtems_filesystem_location_info_t *loc
-);
-
-/*
- * Turn on IMFS assertions when RTEMS_DEBUG is defined.
- */
-#ifdef RTEMS_DEBUG
- #include <assert.h>
-
- #define IMFS_assert(_x) assert(_x)
-#else
- #define IMFS_assert(_x)
-#endif
-
-static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
-{
- IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;
-
- loc->handlers = node->control->handlers;
-}
-
-static inline void IMFS_add_to_directory(
- IMFS_jnode_t *dir_node,
- IMFS_jnode_t *entry_node
-)
-{
- IMFS_directory_t *dir = (IMFS_directory_t *) dir_node;
-
- entry_node->Parent = dir_node;
- rtems_chain_append_unprotected( &dir->Entries, &entry_node->Node );
-}
-
-static inline void IMFS_remove_from_directory( IMFS_jnode_t *node )
-{
- IMFS_assert( node->Parent != NULL );
- node->Parent = NULL;
- rtems_chain_extract_unprotected( &node->Node );
-}
-
-static inline bool IMFS_is_directory( const IMFS_jnode_t *node )
-{
- return S_ISDIR( node->st_mode );
-}
-
-#define IMFS_STAT_FMT_HARD_LINK 0
-
-static inline bool IMFS_is_hard_link( mode_t mode )
-{
- return ( mode & S_IFMT ) == IMFS_STAT_FMT_HARD_LINK;
-}
-
-static inline ino_t IMFS_node_to_ino( const IMFS_jnode_t *node )
-{
- return (ino_t) ((uintptr_t) node);
-}
-
-/** @} */
-
-/**
- * @addtogroup IMFSGenericNodes
- */
-/**@{*/
-
-static inline void *IMFS_generic_get_context_by_node(
- const IMFS_jnode_t *node
-)
-{
- const IMFS_generic_t *generic = (const IMFS_generic_t *) node;
-
- return generic->context;
-}
-
-static inline void *IMFS_generic_get_context_by_location(
- const rtems_filesystem_location_info_t *loc
-)
-{
- return loc->node_access_2;
-}
-
-static inline void *IMFS_generic_get_context_by_iop(
- const rtems_libio_t *iop
-)
-{
- return IMFS_generic_get_context_by_location( &iop->pathinfo );
-}
-
-static inline dev_t IMFS_generic_get_device_identifier_by_node(
- const IMFS_jnode_t *node
-)
-{
- return rtems_filesystem_make_dev_t_from_pointer( node );
-}
-
-#ifdef __cplusplus
-}
-#endif
-/** @} */
-#endif
-/* end of include file */
diff --git a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h b/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
deleted file mode 100644
index a856c46c41..0000000000
--- a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- * Copyright (c) 2013, 2016 embedded brains GmbH. All rights reserved.
- *
- * embedded brains GmbH
- * Dornierstr. 4
- * 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.org/license/LICENSE.
- */
-
-#ifndef RTEMS_JFFS2_H
-#define RTEMS_JFFS2_H
-
-#include <rtems/fs.h>
-#include <sys/param.h>
-#include <sys/ioccom.h>
-#include <zlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef struct rtems_jffs2_flash_control rtems_jffs2_flash_control;
-
-/**
- * @defgroup JFFS2 Journalling Flash File System Version 2 (JFFS2) Support
- *
- * @ingroup FileSystemTypesAndMount
- *
- * @brief Mount options for the Journalling Flash File System, Version 2
- * (JFFS2).
- *
- * The application must provide flash device geometry information and flash
- * device operations in the flash control structure
- * @ref rtems_jffs2_flash_control.
- *
- * The application can optionally provide a compressor control structure to
- * enable data compression using the selected compression algorithm.
- *
- * The application must enable JFFS2 support with rtems_filesystem_register()
- * or CONFIGURE_FILESYSTEM_JFFS2 via <rtems/confdefs.h>.
- *
- * An example mount with a simple memory based flash device simulation follows.
- * The zlib is used for as the compressor.
- *
- * @code
- * #include <string.h>
- *
- * #include <rtems/jffs2.h>
- * #include <rtems/libio.h>
- *
- * #define BLOCK_SIZE (32UL * 1024UL)
- *
- * #define FLASH_SIZE (32UL * BLOCK_SIZE)
- *
- * typedef struct {
- * rtems_jffs2_flash_control super;
- * unsigned char area[FLASH_SIZE];
- * } flash_control;
- *
- * static flash_control *get_flash_control(rtems_jffs2_flash_control *super)
- * {
- * return (flash_control *) super;
- * }
- *
- * static int flash_read(
- * rtems_jffs2_flash_control *super,
- * uint32_t offset,
- * unsigned char *buffer,
- * size_t size_of_buffer
- * )
- * {
- * flash_control *self = get_flash_control(super);
- * unsigned char *chunk = &self->area[offset];
- *
- * memcpy(buffer, chunk, size_of_buffer);
- *
- * return 0;
- * }
- *
- * static int flash_write(
- * rtems_jffs2_flash_control *super,
- * uint32_t offset,
- * const unsigned char *buffer,
- * size_t size_of_buffer
- * )
- * {
- * flash_control *self = get_flash_control(super);
- * unsigned char *chunk = &self->area[offset];
- * size_t i;
- *
- * for (i = 0; i < size_of_buffer; ++i) {
- * chunk[i] &= buffer[i];
- * }
- *
- * return 0;
- * }
- *
- * static int flash_erase(
- * rtems_jffs2_flash_control *super,
- * uint32_t offset
- * )
- * {
- * flash_control *self = get_flash_control(super);
- * unsigned char *chunk = &self->area[offset];
- *
- * memset(chunk, 0xff, BLOCK_SIZE);
- *
- * return 0;
- * }
- *
- * static flash_control flash_instance = {
- * .super = {
- * .block_size = BLOCK_SIZE,
- * .flash_size = FLASH_SIZE,
- * .read = flash_read,
- * .write = flash_write,
- * .erase = flash_erase,
- * .device_identifier = 0xc01dc0fe
- * }
- * };
- *
- * static rtems_jffs2_compressor_zlib_control compressor_instance = {
- * .super = {
- * .compress = rtems_jffs2_compressor_zlib_compress,
- * .decompress = rtems_jffs2_compressor_zlib_decompress
- * }
- * };
- *
- * static const rtems_jffs2_mount_data mount_data = {
- * .flash_control = &flash_instance.super,
- * .compressor_control = &compressor_instance.super
- * };
- *
- * static void erase_all(void)
- * {
- * memset(&flash_instance.area[0], 0xff, FLASH_SIZE);
- * }
- *
- * void example_jffs2_mount(const char *mount_dir)
- * {
- * int rv;
- *
- * erase_all();
- *
- * rv = mount_and_make_target_path(
- * NULL,
- * mount_dir,
- * RTEMS_FILESYSTEM_TYPE_JFFS2,
- * RTEMS_FILESYSTEM_READ_WRITE,
- * &mount_data
- * );
- * assert(rv == 0);
- * }
- * @endcode
- *
- * @{
- */
-
-/**
- * @brief Read from flash operation.
- *
- * @param[in, out] self The flash control.
- * @param[in] offset The offset to read from the flash begin in bytes.
- * @param[out] buffer The buffer receiving the data.
- * @param[in] size_of_buffer The size of the buffer in bytes.
- *
- * @retval 0 Successful operation.
- * @retval -EIO An error occurred. Please note that the value is negative.
- * @retval other All other values are reserved and must not be used.
- */
-typedef int (*rtems_jffs2_flash_read)(
- rtems_jffs2_flash_control *self,
- uint32_t offset,
- unsigned char *buffer,
- size_t size_of_buffer
-);
-
-/**
- * @brief Write to flash operation.
- *
- * @param[in, out] self The flash control.
- * @param[in] offset The offset to write from the flash begin in bytes.
- * @param[in] buffer The buffer containing the data to write.
- * @param[in] size_of_buffer The size of the buffer in bytes.
- *
- * @retval 0 Successful operation.
- * @retval -EIO An error occurred. Please note that the value is negative.
- * @retval other All other values are reserved and must not be used.
- */
-typedef int (*rtems_jffs2_flash_write)(
- rtems_jffs2_flash_control *self,
- uint32_t offset,
- const unsigned char *buffer,
- size_t size_of_buffer
-);
-
-/**
- * @brief Flash erase operation.
- *
- * This operation must erase one block specified by the offset.
- *
- * @param[in, out] self The flash control.
- * @param[in] offset The offset to erase from the flash begin in bytes.
- *
- * @retval 0 Successful operation.
- * @retval -EIO An error occurred. Please note that the value is negative.
- * @retval other All other values are reserved and must not be used.
- */
-typedef int (*rtems_jffs2_flash_erase)(
- rtems_jffs2_flash_control *self,
- uint32_t offset
-);
-
-/**
- * @brief Flash destroy operation.
- *
- * The flash destroy operation is called during unmount of the file system
- * instance. It can be used to free the resources associated with the now
- * unused flash control
- *
- * @param[in, out] self The flash control.
- */
-typedef void (*rtems_jffs2_flash_destroy)(
- rtems_jffs2_flash_control *self
-);
-
-/**
- * @brief Trigger garbage collection operation.
- *
- * An optional garbage collection thread may perform now a garbage collection
- * using the RTEMS_JFFS2_ON_DEMAND_GARBAGE_COLLECTION IO control.
- *
- * The garbage collection must not run in the executing context.
- *
- * @param[in] self The flash control.
- */
-typedef void (*rtems_jffs2_trigger_garbage_collection)(
- rtems_jffs2_flash_control *self
-);
-
-/**
- * @brief JFFS2 flash device control.
- */
-struct rtems_jffs2_flash_control {
- /**
- * @brief The size in bytes of the erasable unit of the flash device.
- */
- uint32_t block_size;
-
- /**
- * @brief The size in bytes of the flash device.
- *
- * It must be an integral multiple of the block size. The flash device must
- * have at least five blocks.
- */
- uint32_t flash_size;
-
- /**
- * @brief Read from flash operation.
- */
- rtems_jffs2_flash_read read;
-
- /**
- * @brief Write to flash operation.
- */
- rtems_jffs2_flash_write write;
-
- /**
- * @brief Flash erase operation.
- */
- rtems_jffs2_flash_erase erase;
-
- /**
- * @brief Flash destroy operation.
- *
- * This operation is optional and the pointer may be @c NULL.
- */
- rtems_jffs2_flash_destroy destroy;
-
- /**
- * @brief The device identifier of the flash device.
- *
- * It is used in combination with the inode number to uniquely identify a
- * file system node in the system.
- */
- dev_t device_identifier;
-
- /**
- * @brief Trigger garbage collection operation.
- *
- * This operation is optional and may be NULL. This operation should wake up
- * a garbage collection thread. The garbage collection thread should use the
- * RTEMS_JFFS2_ON_DEMAND_GARBAGE_COLLECTION IO control to carry out the work.
- */
- rtems_jffs2_trigger_garbage_collection trigger_garbage_collection;
-};
-
-typedef struct rtems_jffs2_compressor_control rtems_jffs2_compressor_control;
-
-/**
- * @brief Compress operation.
- *
- * @param[in, out] self The compressor control.
- * @param[in] data_in The uncompressed data.
- * @param[out] cdata_out Pointer to buffer with the compressed data.
- * @param[in, out] datalen On entry, the size in bytes of the uncompressed
- * data. On exit, the size in bytes of uncompressed data which was actually
- * compressed.
- * @param[in, out] cdatalen On entry, the size in bytes available for
- * compressed data. On exit, the size in bytes of the actually compressed
- * data.
- *
- * @return The compressor type.
- */
-typedef uint16_t (*rtems_jffs2_compressor_compress)(
- rtems_jffs2_compressor_control *self,
- unsigned char *data_in,
- unsigned char *cdata_out,
- uint32_t *datalen,
- uint32_t *cdatalen
-);
-
-/**
- * @brief Decompress operation.
- *
- * @param[in, out] self The compressor control.
- * @param[in] comprtype The compressor type.
- * @param[in] cdata_in The compressed data.
- * @param[out] data_out The uncompressed data.
- * @param[in] cdatalen The size in bytes of the compressed data.
- * @param[in] datalen The size in bytes of the uncompressed data.
- *
- * @retval 0 Successful operation.
- * @retval -EIO An error occurred. Please note that the value is negative.
- * @retval other All other values are reserved and must not be used.
- */
-typedef int (*rtems_jffs2_compressor_decompress)(
- rtems_jffs2_compressor_control *self,
- uint16_t comprtype,
- unsigned char *cdata_in,
- unsigned char *data_out,
- uint32_t cdatalen,
- uint32_t datalen
-);
-
-/**
- * @brief Compressor destroy operation.
- *
- * The compressor destroy operation is called during unmount of the file system
- * instance. It can be used to free the resources associated with the now
- * unused compressor operations.
- *
- * @param[in, out] self The compressor control.
- */
-typedef void (*rtems_jffs2_compressor_destroy)(
- rtems_jffs2_compressor_control *self
-);
-
-/**
- * @brief JFFS2 compressor control.
- */
-struct rtems_jffs2_compressor_control {
- /**
- * @brief Compress operation.
- */
- rtems_jffs2_compressor_compress compress;
-
- /**
- * @brief Decompress operation.
- */
- rtems_jffs2_compressor_decompress decompress;
-
- /**
- * @brief Compressor destroy operation.
- *
- * This operation is optional and the pointer may be @c NULL.
- */
- rtems_jffs2_compressor_destroy destroy;
-
- /**
- * @brief Compression buffer.
- */
- unsigned char buffer[PAGE_SIZE];
-};
-
-/**
- * @brief RTIME compressor compress operation.
- */
-uint16_t rtems_jffs2_compressor_rtime_compress(
- rtems_jffs2_compressor_control *self,
- unsigned char *data_in,
- unsigned char *cdata_out,
- uint32_t *datalen,
- uint32_t *cdatalen
-);
-
-/**
- * @brief RTIME compressor decompress operation.
- */
-int rtems_jffs2_compressor_rtime_decompress(
- rtems_jffs2_compressor_control *self,
- uint16_t comprtype,
- unsigned char *cdata_in,
- unsigned char *data_out,
- uint32_t cdatalen,
- uint32_t datalen
-);
-
-/**
- * @brief ZLIB compressor control structure.
- */
-typedef struct {
- rtems_jffs2_compressor_control super;
- z_stream stream;
-} rtems_jffs2_compressor_zlib_control;
-
-/**
- * @brief ZLIB compressor compress operation.
- */
-uint16_t rtems_jffs2_compressor_zlib_compress(
- rtems_jffs2_compressor_control *self,
- unsigned char *data_in,
- unsigned char *cdata_out,
- uint32_t *datalen,
- uint32_t *cdatalen
-);
-
-/**
- * @brief ZLIB compressor decompress operation.
- */
-int rtems_jffs2_compressor_zlib_decompress(
- rtems_jffs2_compressor_control *self,
- uint16_t comprtype,
- unsigned char *cdata_in,
- unsigned char *data_out,
- uint32_t cdatalen,
- uint32_t datalen
-);
-
-/**
- * @brief JFFS2 mount options.
- *
- * For JFFS2 the mount options are mandatory.
- */
-typedef struct {
- /**
- * @brief Flash control.
- */
- rtems_jffs2_flash_control *flash_control;
-
- /**
- * @brief Compressor control.
- *
- * The compressor is optional and this pointer may be @c NULL.
- */
- rtems_jffs2_compressor_control *compressor_control;
-} rtems_jffs2_mount_data;
-
-/**
- * @brief Initialization handler of the JFFS2 file system.
- *
- * @param[in, out] mt_entry The mount table entry.
- * @param[in] data The mount options are mandatory for JFFS2 and data must
- * point to a valid @ref rtems_jffs2_mount_data structure used for this file
- * system instance.
- *
- * @retval 0 Successful operation.
- * @retval -1 An error occurred. The @c errno indicates the error.
- *
- * @see mount().
- */
-int rtems_jffs2_initialize(
- rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data
-);
-
-/**
- * @brief JFFS2 filesystem instance information.
- *
- * @see RTEMS_JFFS2_GET_INFO.
- */
-typedef struct {
- /**
- * @brief Flash size in bytes.
- */
- uint32_t flash_size;
-
- /**
- * @brief Count of flash blocks (erasable units).
- */
- uint32_t flash_blocks;
-
- /**
- * @brief Size of a flash block in bytes.
- */
- uint32_t flash_block_size;
-
- /**
- * @brief Used size in bytes.
- *
- * Used areas contain valid data.
- */
- uint32_t used_size;
-
- /**
- * @brief Dirty size in bytes.
- *
- * Used areas contain no longer used data.
- */
- uint32_t dirty_size;
-
- /**
- * @brief Wasted size in bytes.
- *
- * Wasted areas are unusable.
- */
- uint32_t wasted_size;
-
- /**
- * @brief Free size in bytes.
- *
- * Free areas may be used to store new data.
- */
- uint32_t free_size;
-
- /**
- * @brief Bad size in bytes.
- *
- * Bad areas indicate damaged flash blocks.
- */
- uint32_t bad_size;
-
- /**
- * @brief Count of clean blocks.
- *
- * Clean blocks contain only used areas.
- */
- uint32_t clean_blocks;
-
- /**
- * @brief Count of dirty blocks.
- *
- * Dirty blocks contain dirty and used areas.
- */
- uint32_t dirty_blocks;
-
- /**
- * @brief Count of erasable blocks.
- *
- * Erase blocks contain only dirty or wasted areas.
- */
- uint32_t erasable_blocks;
-
- /**
- * @brief Count of free blocks.
- *
- * Free blocks contain a free area.
- */
- uint32_t free_blocks;
-
- /**
- * @brief Count of bad blocks.
- *
- * Bad blocks are damaged.
- */
- uint32_t bad_blocks;
-} rtems_jffs2_info;
-
-/**
- * @brief IO control to get the JFFS2 filesystem instance information.
- *
- * @see rtems_jffs2_info.
- */
-#define RTEMS_JFFS2_GET_INFO _IOR('F', 1, rtems_jffs2_info)
-
-/**
- * @brief IO control to perform an on demand garbage collection in a JFFS2
- * filesystem instance.
- *
- * This operation is intended to be used by an optional garbage collection
- * thread. See rtems_jffs2_flash_control::trigger_garbage_collection.
- */
-#define RTEMS_JFFS2_ON_DEMAND_GARBAGE_COLLECTION _IO('F', 2)
-
-/**
- * @brief IO control to force a garbage collection in a JFFS2 filesystem
- * instance.
- *
- * Use this operation with care since it may wear out your flash.
- */
-#define RTEMS_JFFS2_FORCE_GARBAGE_COLLECTION _IO('F', 3)
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTEMS_JFFS2_H */
diff --git a/cpukit/libfs/src/nfsclient/Makefile.am b/cpukit/libfs/src/nfsclient/Makefile.am
index 85f4a71756..04d840f507 100644
--- a/cpukit/libfs/src/nfsclient/Makefile.am
+++ b/cpukit/libfs/src/nfsclient/Makefile.am
@@ -10,6 +10,11 @@ dirutils_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
if LIBNETWORKING
project_lib_LIBRARIES = libnfs.a
+$(PROJECT_LIB)/libnfs.a: libnfs.a
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/libnfs.a
+TMPINSTALL_FILES = $(PROJECT_LIB)/libnfs.a
+
+
# if you have CEXP set this variable to 'YES'
# and some "help" info will be compiled in.
libnfs_a_SOURCES = src/rpcio.c src/rpcio.h
@@ -19,8 +24,6 @@ libnfs_a_SOURCES += proto/mount_prot.h proto/nfs_prot.h
# With CEXP
# libnfs_a_SOURCES += dirutils.c rpcio.modini.c nfs.modini.c cexphelp.c
-include_HEADERS = src/librtemsNfs.h
-
# PGMS=${ARCH}/nfs.obj ${ARCH}/rpcio.obj ${ARCH}/dirutils.obj
libnfs_a_CPPFLAGS = $(AM_CPPFLAGS)
@@ -66,5 +69,4 @@ $(srcdir)/proto/nfs_prot_xdr.c: proto/nfs_prot.x proto/nfs_prot.h
> nfs_prot_xdr.c)
endif
-include $(srcdir)/preinstall.am
include $(top_srcdir)/automake/local.am
diff --git a/cpukit/libfs/src/nfsclient/preinstall.am b/cpukit/libfs/src/nfsclient/preinstall.am
deleted file mode 100644
index 593fc0367d..0000000000
--- a/cpukit/libfs/src/nfsclient/preinstall.am
+++ /dev/null
@@ -1,51 +0,0 @@
-## Automatically generated by ampolish3 - Do not edit
-
-if AMPOLISH3
-$(srcdir)/preinstall.am: Makefile.am
- $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-endif
-
-PREINSTALL_DIRS =
-DISTCLEANFILES = $(PREINSTALL_DIRS)
-
-all-am: $(PREINSTALL_FILES)
-
-PREINSTALL_FILES =
-CLEANFILES = $(PREINSTALL_FILES)
-
-all-local: $(TMPINSTALL_FILES)
-
-TMPINSTALL_FILES =
-CLEANFILES += $(TMPINSTALL_FILES)
-
-$(PROJECT_LIB)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_LIB)
- @: > $(PROJECT_LIB)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_INCLUDE)
- @: > $(PROJECT_INCLUDE)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-
-$(PROJECT_LIB)/dirutils.rel: dirutils.rel $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_PROGRAM) $< $(PROJECT_LIB)/dirutils.rel
-TMPINSTALL_FILES += $(PROJECT_LIB)/dirutils.rel
-
-if LIBNETWORKING
-$(PROJECT_LIB)/libnfs.a: libnfs.a $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/libnfs.a
-TMPINSTALL_FILES += $(PROJECT_LIB)/libnfs.a
-
-$(PROJECT_INCLUDE)/librtemsNfs.h: src/librtemsNfs.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/librtemsNfs.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/librtemsNfs.h
-
-$(PROJECT_LIB)/nfs.rel: nfs.rel $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_PROGRAM) $< $(PROJECT_LIB)/nfs.rel
-TMPINSTALL_FILES += $(PROJECT_LIB)/nfs.rel
-
-$(PROJECT_LIB)/rpcio.rel: rpcio.rel $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_PROGRAM) $< $(PROJECT_LIB)/rpcio.rel
-TMPINSTALL_FILES += $(PROJECT_LIB)/rpcio.rel
-endif
diff --git a/cpukit/libfs/src/nfsclient/src/librtemsNfs.h b/cpukit/libfs/src/nfsclient/src/librtemsNfs.h
deleted file mode 100644
index 530eee2144..0000000000
--- a/cpukit/libfs/src/nfsclient/src/librtemsNfs.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * @file
- *
- * @brief Public Interface to the NFS Client Library for RTEMS
- *
- * @ingroup rtems-nfsclient
- */
-
-/*
- * Author: Till Straumann <strauman@slac.stanford.edu> 2002-2003
- *
- * Authorship
- * ----------
- * This software (NFS-2 client implementation for RTEMS) was created by
- * Till Straumann <strauman@slac.stanford.edu>, 2002-2007,
- * Stanford Linear Accelerator Center, Stanford University.
- *
- * Acknowledgement of sponsorship
- * ------------------------------
- * The NFS-2 client implementation for RTEMS was produced by
- * the Stanford Linear Accelerator Center, Stanford University,
- * under Contract DE-AC03-76SFO0515 with the Department of Energy.
- *
- * Government disclaimer of liability
- * ----------------------------------
- * Neither the United States nor the United States Department of Energy,
- * nor any of their employees, makes any warranty, express or implied, or
- * assumes any legal liability or responsibility for the accuracy,
- * completeness, or usefulness of any data, apparatus, product, or process
- * disclosed, or represents that its use would not infringe privately owned
- * rights.
- *
- * Stanford disclaimer of liability
- * --------------------------------
- * Stanford University makes no representations or warranties, express or
- * implied, nor assumes any liability for the use of this software.
- *
- * Stanford disclaimer of copyright
- * --------------------------------
- * Stanford University, owner of the copyright, hereby disclaims its
- * copyright and all other rights in this software. Hence, anyone may
- * freely use it for any purpose without restriction.
- *
- * Maintenance of notices
- * ----------------------
- * In the interest of clarity regarding the origin and status of this
- * SLAC software, this and all the preceding Stanford University notices
- * are to remain affixed to any copy or derivative of this software made
- * or distributed by the recipient and are to be affixed to any copy of
- * software made or distributed by the recipient that contains a copy or
- * derivative of this software.
- *
- * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
- */
-
-#ifndef LIB_RTEMS_NFS_CLIENT_H
-#define LIB_RTEMS_NFS_CLIENT_H
-
-/**
- * @defgroup rtems-nfsclient NFS Client Library
- *
- * @ingroup nfsclient
- * @{
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <rtems.h>
-#include <rtems/libio.h>
-#include <rtems/libio_.h>
-#include <rtems/seterr.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <netdb.h>
-#include <ctype.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** RPCIO driver interface.
- * If you need RPCIO for other purposes than NFS
- * you may want to include <rpcio.h>
-#include "rpcio.h"
- */
-
-/** Priority of daemon; may be setup prior to calling rpcUdpInit();
- * otherwise the network task priority from the rtems_bsdnet_config
- * is used...
- */
-extern rtems_task_priority rpciodPriority;
-
-#ifdef RTEMS_SMP
-/** CPU affinity of daemon; may be setup prior to calling rpcUdpInit();
- * otherwise the network task CPU affinity from the rtems_bsdnet_config
- * is used...
- */
-extern const cpu_set_t *rpciodCpuset;
-extern size_t rpciodCpusetSize;
-#endif
-
-/**
- * @brief Sets the XIDs of the RPC transaction hash table.
- *
- * The active RPC transactions are stored in a hash table. Each table entry
- * contains the XID of its corresponding transaction. The XID consists of two
- * parts. The lower part is determined by the hash table index. The upper
- * part is incremented in each send operation.
- *
- * This function sets the upper part of the XID in all hash table entries.
- * This can be used to ensure that the XIDs are not reused in a short interval
- * for example during a boot process or after resets.
- *
- * @param[in] xid The upper part is used to set the upper XID part of the hash
- * table entries.
- */
-void
-rpcSetXIDs(uint32_t xid);
-
-/** Initialize the driver.
- *
- * Note, called in nfsfs initialise when mount is called.
- *
- * @retval 0 on success, -1 on failure
- */
-int
-rpcUdpInit(void);
-
-/**
- * @brief RPC cleanup and stop.
- *
- * @retval 0 on success, nonzero if still in use
- */
-int
-rpcUdpCleanup(void);
-
-/** NFS driver interface */
-
-/**
- * @brief Initialize the NFS driver.
- *
- * The RPCIO driver must have been initialized prior to calling this.
- *
- * Note, called in nfsfs initialise when mount is called with defaults.
- *
- * ARGS: depth of the small and big
- * transaction pools, i.e. how
- * many transactions (buffers)
- * should always be kept around.
- *
- * (If more transactions are needed,
- * they are created and destroyed
- * on the fly).
- *
- * Supply zero values to have the
- * driver chose reasonable defaults.
- *
- * @retval 0 Successful operation.
- * @retval -1 An error occurred. The errno is set to indicate the error.
- */
-int
-nfsInit(int smallPoolDepth, int bigPoolDepth);
-
-/**
- * @brief Driver cleanup code.
- *
- * @retval 0 on success, nonzero if still in use
- */
-int
-nfsCleanup(void);
-
-/**
- * @brief Dump a list of the currently mounted NFS to a file.
- *
- * Dump a list of the currently mounted NFS to a file
- * (stdout is used in case f==NULL)
- */
-int
-nfsMountsShow(FILE *f);
-
-/**
- * @brief Filesystem mount table mount handler.
- *
- * Filesystem mount table mount handler. Do not call, use the mount call.
- */
-int
-rtems_nfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry,
- const void *data);
-
-/**
- * @brief A utility routine to find the path leading to a
- * rtems_filesystem_location_info_t node.
- *
- * This should really be present in libcsupport...
- *
- * @param[in] 'loc' and a buffer 'buf' (length 'len') to hold the path.
- *
- * @param[out] path copied into 'buf'
- *
- * @retval 0 on success, RTEMS error code on error.
- */
-rtems_status_code
-rtems_filesystem_resolve_location(char *buf, int len, rtems_filesystem_location_info_t *loc);
-
-/**
- * @brief Set the timeout (initial default: 10s) for NFS and mount calls.
- *
- * Set the timeout (initial default: 10s) for NFS and mount calls.
- *
- * @retval 0 on success, nonzero if the requested timeout is less than
- * a clock tick or if the system clock rate cannot be determined.
- */
-
-int
-nfsSetTimeout(uint32_t timeout_ms);
-
-/** Read current timeout (in milliseconds) */
-uint32_t
-nfsGetTimeout(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-#endif
diff --git a/cpukit/libfs/src/pipe/pipe.h b/cpukit/libfs/src/pipe/pipe.h
deleted file mode 100644
index 7c6566ad50..0000000000
--- a/cpukit/libfs/src/pipe/pipe.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX FIFO/pipe File System Support
- *
- * This include file defines the interface to the POSIX FIFO/pipe file system
- * support.
- */
-
-/*
- * Author: Wei Shen <cquark@gmail.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_PIPE_H
-#define _RTEMS_PIPE_H
-
-#include <rtems/libio.h>
-
-/**
- * @defgroup FIFO_PIPE FIFO/Pipe File System Support
- *
- * @ingroup FileSystemTypesAndMount
- *
- * @brief Interface to the POSIX FIFO/Pipe File System
- */
-/**@{*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Control block to manage each pipe */
-typedef struct pipe_control {
- char *Buffer;
- unsigned int Size;
- unsigned int Start;
- unsigned int Length;
- unsigned int Readers;
- unsigned int Writers;
- unsigned int waitingReaders;
- unsigned int waitingWriters;
- unsigned int readerCounter; /* incremental counters */
- unsigned int writerCounter; /* for differentiation of successive opens */
- rtems_id Semaphore;
- rtems_id readBarrier; /* wait queues */
- rtems_id writeBarrier;
-#if 0
- boolean Anonymous; /* anonymous pipe or FIFO */
-#endif
-} pipe_control_t;
-
-/**
- * @brief Create an anonymous pipe.
- *
- * Called by pipe() to create an anonymous pipe.
- */
-extern int pipe_create(
- int filsdes[2]
-);
-
-/**
- * @brief Release a pipe.
- *
- * Interface to file system close.
- *
- * *pipep points to pipe control structure. When the last user releases pipe,
- * it will be set to NULL.
- */
-extern void pipe_release(
- pipe_control_t **pipep,
- rtems_libio_t *iop
-);
-
-/**
- * @brief File system open.
- * Interface to file system open.
- *
- * *pipep points to pipe control structure. If called with *pipep = NULL,
- * fifo_open will try allocating and initializing a control structure. If the
- * call succeeds, *pipep will be set to address of new control structure.
- */
-extern int fifo_open(
- pipe_control_t **pipep,
- rtems_libio_t *iop
-);
-
-/**
- * @brief File system read.
- *
- * Interface to file system read.
- */
-extern ssize_t pipe_read(
- pipe_control_t *pipe,
- void *buffer,
- size_t count,
- rtems_libio_t *iop
-);
-
-/**
- * @brief File system write.
- *
- * Interface to file system write.
- */
-extern ssize_t pipe_write(
- pipe_control_t *pipe,
- const void *buffer,
- size_t count,
- rtems_libio_t *iop
-);
-
-/**
- * @brief File system Input/Output control.
- *
- * Interface to file system ioctl.
- */
-extern int pipe_ioctl(
- pipe_control_t *pipe,
- ioctl_command_t cmd,
- void *buffer,
- rtems_libio_t *iop
-);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h b/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h
deleted file mode 100644
index 5574339421..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File Systems Bitmap Routines
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Bitmap Routines.
- *
- * These functions manage bit maps. A bit map consists of the map of bit
- * allocated in a block and a search map where a bit represents 32 actual
- * bits. The search map allows for a faster search for an available bit as 32
- * search bits can checked in a test.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_BITMAPS_H_)
-#define _RTEMS_RFS_BITMAPS_H_
-
-#include <rtems/rfs/rtems-rfs-buffer.h>
-#include <rtems/rfs/rtems-rfs-file-system-fwd.h>
-#include <rtems/rfs/rtems-rfs-trace.h>
-
-/**
- * Define the way the bits are configured. We can have them configured as clear
- * being 0 or clear being 1. This does not effect how masks are defined. A mask
- * always has a 1 for set and 0 for clear.
- */
-#define RTEMS_RFS_BITMAP_CLEAR_ZERO 0
-
-#if RTEMS_RFS_BITMAP_CLEAR_ZERO
-/*
- * Bit set is a 1 and clear is 0.
- */
-#define RTEMS_RFS_BITMAP_BIT_CLEAR 0
-#define RTEMS_RFS_BITMAP_BIT_SET 1
-#define RTEMS_RFS_BITMAP_ELEMENT_SET (RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK)
-#define RTEMS_RFS_BITMAP_ELEMENT_CLEAR (0)
-#define RTEMS_RFS_BITMAP_SET_BITS(_t, _b) ((_t) | (_b))
-#define RTEMS_RFS_BITMAP_CLEAR_BITS(_t, _b) ((_t) & ~(_b))
-#define RTEMS_RFS_BITMAP_TEST_BIT(_t, _b) (((_t) & (1 << (_b))) != 0 ? true : false)
-#else
-/*
- * Bit set is a 0 and clear is 1.
- */
-#define RTEMS_RFS_BITMAP_BIT_CLEAR 1
-#define RTEMS_RFS_BITMAP_BIT_SET 0
-#define RTEMS_RFS_BITMAP_ELEMENT_SET (0)
-#define RTEMS_RFS_BITMAP_ELEMENT_CLEAR (RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK)
-#define RTEMS_RFS_BITMAP_SET_BITS(_t, _b) ((_t) & ~(_b))
-#define RTEMS_RFS_BITMAP_CLEAR_BITS(_t, _b) ((_t) | (_b))
-#define RTEMS_RFS_BITMAP_TEST_BIT(_t, _b) (((_t) & (1 << (_b))) == 0 ? true : false)
-#endif
-
-/**
- * Invert a mask. Masks are always 1 for set and 0 for clear.
- */
-#define RTEMS_RFS_BITMAP_INVERT_MASK(_mask) (~(_mask))
-
-/**
- * This is the full mask of the length of the element. A mask is always a 1 for
- * set and 0 for clear. It is not effected by the state of
- * RTEMS_RFS_BITMAP_CLEAR_ZERO.
- */
-#define RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK (0xffffffffUL)
-
-/**
- * The bitmap search window. Searches occur around a seed in either direction
- * for half the window.
- */
-#define RTEMS_RFS_BITMAP_SEARCH_WINDOW (rtems_rfs_bitmap_element_bits () * 64)
-
-/**
- * A bit in a map.
- */
-typedef int32_t rtems_rfs_bitmap_bit;
-
-/**
- * The basic element of a bitmap. A bitmap is manipulated by elements.
- */
-typedef uint32_t rtems_rfs_bitmap_element;
-
-/**
- * The power of 2 number of bits in the element.
- */
-#define RTEMS_RFS_ELEMENT_BITS_POWER_2 (5)
-
-/**
- * A bitmap or map is an array of bitmap elements.
- */
-typedef rtems_rfs_bitmap_element* rtems_rfs_bitmap_map;
-
-/**
- * The bitmap control is a simple way to manage the various parts of a bitmap.
- */
-typedef struct rtems_rfs_bitmap_control_s
-{
- rtems_rfs_buffer_handle* buffer; //< Handle the to buffer with the bit
- //map.
- rtems_rfs_file_system* fs; //< The map's file system.
- rtems_rfs_buffer_block block; //< The map's block number on disk.
- size_t size; //< Number of bits in the map. Passed
- //to create.
- size_t free; //< Number of bits in the map that are
- //free (clear).
- rtems_rfs_bitmap_map search_bits; //< The search bit map memory.
-} rtems_rfs_bitmap_control;
-
-/**
- * Return the number of bits for the number of bytes provided.
- */
-#define rtems_rfs_bitmap_numof_bits(_bytes) (8 * (_bytes))
-
-/**
- * Return the number of bits for the number of bytes provided. The search
- * element and the element must have the same number of bits.
- */
-#define rtems_rfs_bitmap_element_bits() \
- rtems_rfs_bitmap_numof_bits (sizeof (rtems_rfs_bitmap_element))
-
-/**
- * Return the number of bits a search element covers.
- */
-#define rtems_rfs_bitmap_search_element_bits() \
- (rtems_rfs_bitmap_element_bits() * rtems_rfs_bitmap_element_bits())
-
-/**
- * Return the number of elements for a given number of bits.
- */
-#define rtems_rfs_bitmap_elements(_bits) \
- ((((_bits) - 1) / rtems_rfs_bitmap_element_bits()) + 1)
-
-/**
- * Release the bitmap buffer back to the buffer pool or cache.
- */
-#define rtems_rfs_bitmap_release_buffer(_fs, _bm) \
- rtems_rfs_buffer_handle_release (_fs, (_bm)->buffer)
-
-/**
- * Return the element index for a given bit. We use a macro to hide any
- * implementation assuptions. Typically this would be calculated by dividing
- * the bit index by the number of bits in an element. Given we have a power of
- * 2 as the number of bits we can avoid the division by using a shift. A good
- * compiler should figure this out but I would rather enforce this than rely on
- * the specific backend of a compiler to do the right thing.
- */
-#define rtems_rfs_bitmap_map_index(_b) \
- ((_b) >> RTEMS_RFS_ELEMENT_BITS_POWER_2)
-
-/**
- * Return the bit offset for a given bit in an element in a map. See @ref
- * rtems_rfs_bitmap_map_index for a detailed reason why.
- */
-#define rtems_rfs_bitmap_map_offset(_b) \
- ((_b) & ((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1))
-
-/**
- * Return the size of the bitmap.
- */
-#define rtems_rfs_bitmap_map_size(_c) ((_c)->size)
-
-/**
- * Return the number of free bits in the bitmap.
- */
-#define rtems_rfs_bitmap_map_free(_c) ((_c)->free)
-
-/**
- * Return the buffer handle.
- */
-#define rtems_rfs_bitmap_map_handle(_c) ((_c)->buffer)
-
-/**
- * Return the bitmap map block.
- */
-#define rtems_rfs_bitmap_map_block(_c) ((_c)->block)
-
-/**
- * Create a bit mask with the specified number of bits up to an element's
- * size. The mask is aligned to bit 0 of the element.
- *
- * @param[in] size is the number of bits in the mask.
- *
- * @return The mask of the argument size number of bits.
- */
-rtems_rfs_bitmap_element rtems_rfs_bitmap_mask (unsigned int size);
-
-/**
- * Create a bit mask section. A mask section is a mask that is not aligned to
- * an end of the element.
- *
- * @param[in] start is the first bit of the mask numbered from 0.
- * @param[in] end is the end bit of the mask numbered from 0.
- *
- * @return Mask section as defined by the start and end arguments.
- */
-rtems_rfs_bitmap_element rtems_rfs_bitmap_mask_section (unsigned int start,
- unsigned int end);
-
-/**
- * Set a bit in a map and if all the bits are set, set the search map bit as
- * well.
- *
- * @param[in] control is the control for the map.
- * @param[in] bit is the bit in the map to set.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control,
- rtems_rfs_bitmap_bit bit);
-
-/**
- * Clear a bit in a map and make sure the search map bit is clear so a search
- * will find this bit available.
- *
- * @param[in] control is the control for the map.
- * @param[in] bit is the bit in the map to clear.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control,
- rtems_rfs_bitmap_bit bit);
-
-/**
- * Test a bit in the map.
- *
- * @param[in] control is the bitmap control.
- * @param[in] bit is the bit to test.
- * @param[in] state is the state of the bit if no error is returned.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int
-rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control,
- rtems_rfs_bitmap_bit bit,
- bool* state);
-
-/**
- * Set all bits in the bitmap and set the dirty bit.
- *
- * @param[in] control is the bitmap control.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control);
-
-/**
- * Clear all bits in the bitmap and set the dirty bit.
- *
- * @param[in] control is the bitmap control.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control);
-
-/**
- * Find a free bit searching from the seed up and down until found. The search
- * is performing by moving up from the seed for the window distance then to
- * search down from the seed for the window distance. This is repeated out
- * from the seed for each window until a free bit is found. The search is
- * performed by checking the search map to see if the map has a free bit.
- *
- * @param[in] control is the map control.
- * @param[in] seed is the bit to search out from.
- * @param[out] allocate A bit was allocated.
- * @param[out] bit will contain the bit found free if true is returned.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,
- rtems_rfs_bitmap_bit seed,
- bool* allocate,
- rtems_rfs_bitmap_bit* bit);
-
-/**
- * Create a search bit map from the actual bit map.
- *
- * @param[in] control is the map control.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control);
-
-/**
- * Open a bitmap control with a map and search map.
- *
- * @param[in] control is the map control.
- * @param[in] fs is the file system data.
- * @param[in] buffer is a pointer to the buffer handle the map is
- * stored in.
- * @param[in] size is the number of bits in the map.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_open (rtems_rfs_bitmap_control* control,
- rtems_rfs_file_system* fs,
- rtems_rfs_buffer_handle* buffer,
- size_t size,
- rtems_rfs_buffer_block block);
-
-/**
- * Close a bitmap.
- *
- * @param[in] control is the bit map control.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_bitmap_close (rtems_rfs_bitmap_control* control);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h b/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h
deleted file mode 100644
index 7d0f0693be..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File Systems Block Position and Size Management
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Block Position and Size Management.
- *
- * These functions manage the position in a block map as well as a size of data
- * held in a block map. The position is the block count plus the offset into
- * the last block where a block position of 0 and an offset of 0 is the start
- * of a map. The size has a block count plus an offset, but the offset into the
- * last block gives the actual size of the data in the map. This means a size
- * will always have a block count greater than 0 when the file is not empty. A
- * size offset of 0 and a non-zero block count means the length if aligned to
- * the end of the block. For this reason there are 2 similar types so we know
- * which set of rules are in use and the reason for this file.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_BLOCK_POS_H_)
-#define _RTEMS_RFS_BLOCK_POS_H_
-
-#include <rtems/rfs/rtems-rfs-file-system.h>
-#include <rtems/rfs/rtems-rfs-inode.h>
-
-/**
- * The block number is the same type as the inode block number. This makes sure
- * the sizes of the types match.
- */
-typedef rtems_rfs_inode_block rtems_rfs_block_no;
-
-/**
- * The offset into a block.
- */
-typedef uint32_t rtems_rfs_block_off;
-
-/**
- * A block position is a block number times the block size plus the offset. The
- * block field can be used hold a block number for the position as a look up
- * cache.
- */
-typedef struct rtems_rfs_block_pos_s
-{
- /**
- * The block index in the map. Range is from 0 to the maps block count minus
- * 1.
- */
- rtems_rfs_block_no bno;
-
- /**
- * The offset into the block. Must be less than the block size.
- */
- rtems_rfs_block_off boff;
-
- /**
- * The block number that the bpos + boff map to. The 0 value is invalid and
- * means no block number has been set.
- */
- rtems_rfs_block_no block;
-
-} rtems_rfs_block_pos;
-
-/**
- * Copy a block position.
- *
- * @param[in] _lhs is the left hand side.
- * @param[in] _rhs is the right hand side.
- */
-#define rtems_rfs_block_copy_bpos(_lhs, _rhs) \
- do { (_lhs)->bno = (_rhs)->bno; \
- (_lhs)->boff = (_rhs)->boff; \
- (_lhs)->block = (_rhs)->block; } while (0)
-
-/**
- * Zero a block position.
- *
- * @param[in] bpos is a pointer to the block position.
- */
-static inline void
-rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)
-{
- bpos->bno = 0;
- bpos->boff = 0;
- bpos->block = 0;
-}
-
-/**
- * Given a position compute the block number and block offset.
- *
- * @param[in] fs is the file system data.
- * @param[in] pos is the position as an absolute offset from the start.
- * @param[out] bpos is a pointer to the block position to fill in.
- */
-void rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs,
- rtems_rfs_pos pos,
- rtems_rfs_block_pos* bpos);
-
-/**
- * Given a block position compute the absolute offset.
- *
- * @param[in] fs is the file system data.
- * @param[out] bpos is a pointer to the block position to fill in.
- *
- * @retval offset The absolute offset.
- */
-rtems_rfs_pos rtems_rfs_block_get_pos (rtems_rfs_file_system* fs,
- rtems_rfs_block_pos* bpos);
-
-/**
- * Add the relative position to the block position. The relative position is
- * signed.
- *
- * @param[in] fs is the file system data.
- * @param[in] offset is the relative offset add to the block position.
- * @param[out] bpos is a pointer to the block position to fill in.
- */
-static inline void
-rtems_rfs_block_add_pos (rtems_rfs_file_system* fs,
- rtems_rfs_pos_rel offset,
- rtems_rfs_block_pos* bpos)
-{
- rtems_rfs_block_get_bpos (fs,
- rtems_rfs_block_get_pos (fs, bpos) + offset,
- bpos);
- bpos->block = 0;
-}
-
-/**
- * A block size is the number of blocks less one plus the offset where the
- * offset must be less than the block size.
- */
-typedef struct rtems_rfs_block_size_s
-{
- /**
- * The count of blocks in a map. A 0 means no blocks and a zero length and
- * the offset should also be 0.
- */
- rtems_rfs_block_no count;
-
- /**
- * The offset into the block. An offset of 0 means block size, ie the first
- * byte of the next block which is not allocated.
- */
- rtems_rfs_block_off offset;
-
-} rtems_rfs_block_size;
-
-/**
- * Copy a block size.
- *
- * @param[in] _lhs is the left hand side.
- * @param[in] _rhs is the right hand side.
- */
-#define rtems_rfs_block_copy_size(_lhs, _rhs) \
- do { (_lhs)->count = (_rhs)->count; \
- (_lhs)->offset = (_rhs)->offset; } while (0)
-
-/**
- * Last block ?
- */
-#define rtems_rfs_block_pos_last_block(_p, _s) \
- ((((_p)->bno == 0) && ((_s)->count == 0)) || ((_p)->bno == ((_s)->count - 1)))
-
-/**
- * Last block ?
- */
-#define rtems_rfs_block_pos_past_end(_p, _s) \
- (((_p)->bno && ((_s)->count == 0)) || \
- ((_p)->bno >= (_s)->count) || \
- (((_p)->bno == ((_s)->count - 1)) && ((_p)->boff > (_s)->offset)))
-
-/**
- * Is the block position past the end.
- */
-#define rtems_rfs_block_pos_block_past_end(_p, _s) \
- (((_p)->bno && ((_s)->count == 0)) || ((_p)->bno >= (_s)->count))
-
-/**
- * Copy the size to the block position. Note the block position and the size
- * have different block counts.
- */
-#define rtems_rfs_block_size_get_bpos(_s, _b) \
- do { (_b)->bno = (_s)->count; \
- (_b)->boff = (_s)->offset; \
- (_b)->block = 0; \
- if ((_b)->boff) --(_b)->bno; } while (0)
-
-/**
- * Do the sizes match ?
- */
-#define rtems_rfs_block_size_equal(_lhs, _rhs) \
- (((_lhs)->count == (_rhs)->count) && ((_lhs)->offset == (_rhs)->offset))
-
-/**
- * Zero a block size.
- *
- * @param[in] size is a pointer to the block size.
- */
-static inline void
-rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)
-{
- size->count = 0;
- size->offset = 0;
-}
-
-/**
- * Set the size given a position.
- *
- * @param[in] fs is the file system data.
- * @param[in] pos is the position as an absolute offset from the start.
- * @param[out] size is a pointer to the block size to fill in.
- */
-void rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs,
- rtems_rfs_pos pos,
- rtems_rfs_block_size* size);
-
-/**
- * Calculate the position given the number of blocks and the offset. If the
- * block count is 0 the size is 0. If the block is greater than 0 and the
- * offset is 0 the size is number of blocks multipled by the block size and if
- * the offset is not 0 it is the offset into the last block. For example if
- * blocks is 1 and offset is 0 the size is the block size. If the block count
- * is 1 and size is 100 the size is 100.
- *
- * @param[in] fs is the file system data.
- * @param[in] size The size in blocks and offset.
- *
- * @retval size The size in bytes.
- */
-rtems_rfs_pos rtems_rfs_block_get_size (rtems_rfs_file_system* fs,
- rtems_rfs_block_size* size);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-block.h b/cpukit/libfs/src/rfs/rtems-rfs-block.h
deleted file mode 100644
index 394853b7ad..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-block.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File Systems Block Management
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Block Management.
- *
- * These functions manage the blocks used in the file system.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_BLOCK_H_)
-#define _RTEMS_RFS_BLOCK_H_
-
-#include <rtems/rfs/rtems-rfs-block-pos.h>
-#include <rtems/rfs/rtems-rfs-buffer.h>
-#include <rtems/rfs/rtems-rfs-data.h>
-#include <rtems/rfs/rtems-rfs-file-system.h>
-
-/**
- * Get a block number in the media format and return it in the host format.
- *
- * @param[in] _h is the buffer handle of the block.
- * @param[in] _b is the block number index.
- *
- * @retval block The block number.
- */
-#define rtems_rfs_block_get_number(_h, _b) \
- ((rtems_rfs_block_no) \
- (rtems_rfs_read_u32 (rtems_rfs_buffer_data (_h) + \
- ((_b) * sizeof (rtems_rfs_block_no)))))
-
-/**
- * Set a block number in the media format given a number in the host format.
- *
- * @param[in] _h is the buffer handle of the block.
- * @param[in] _b is the block number index, ie the number of block number not the
- * buffer offset.
- * @param[in] _n is the block number.
- */
-#define rtems_rfs_block_set_number(_h, _b, _n) \
- do { \
- rtems_rfs_write_u32 (rtems_rfs_buffer_data (_h) + \
- ((_b) * sizeof (rtems_rfs_block_no)), (_n)); \
- rtems_rfs_buffer_mark_dirty (_h); \
- } while (0)
-
-/**
- * A block map manges the block lists that originate from an inode. The inode
- * contains a number of block numbers. A block map takes those block numbers
- * and manages them.
- *
- * The blocks cannot have all ones as a block number nor block 0. The block map
- * is series of block numbers in a blocks. The size of the map determines the
- * way the block numbers are stored. The map uses the following:
- *
- * @li @e Direct Access,
- * @li @e Single Indirect Access, and
- * @li @e Double Indirect Access.
- *
- * Direct access has the blocks numbers in the inode slots. The Single Indirect
- * Access has block numbers in the inode slots that pointer to a table of block
- * numbers that point to data blocks. The Double Indirect Access has block
- * numbers in the inode that point to Single Indirect block tables.
- *
- * The inode can hold a number of Direct, Single Indirect, and Double Indirect
- * block tables. The move from Direct to Single occurs then the block count in
- * the map is above the number of slots in the inode. The move from Single to
- * Double occurs when the map block count is greated than the block numbers per
- * block multipled by the slots in the inode. The move from Single to Double
- * occurs when the map block count is over the block numbers per block squared
- * multipled by the number of slots in the inode.
- *
- * The block map can managed files of the follow size verses block size with 5
- * inode slots:
- *
- * @li 41,943,040 bytes for a 512 byte block size,
- * @li 335,544,320 bytes for a 1024 byte block size,
- * @li 2,684,354,560 bytes for a 2048 byte block size, and
- * @li 21,474,836,480 bytes for a 4096 byte block size.
- */
-typedef struct rtems_rfs_block_map_s
-{
- /**
- * Is the map dirty ?
- */
- bool dirty;
-
- /**
- * The inode this map is attached to.
- */
- rtems_rfs_inode_handle* inode;
-
- /**
- * The size of the map.
- */
- rtems_rfs_block_size size;
-
- /**
- * The block map position. Used to navigate the map when seeking. The find
- * call is to a position in the file/directory and is a block number plus
- * offset. The block find only needs to locate a block and not worry about
- * the offset while a seek can be less than a block size yet move across a
- * block boundary. Therefore the position a block map has to maintain must
- * include the offset so seeks work.
- */
- rtems_rfs_block_pos bpos;
-
- /**
- * The last map block allocated. This is used as the goal when allocating a
- * new map block.
- */
- rtems_rfs_block_no last_map_block;
-
- /**
- * The last data block allocated. This is used as the goal when allocating a
- * new data block.
- */
- rtems_rfs_block_no last_data_block;
-
- /**
- * The block map.
- */
- uint32_t blocks[RTEMS_RFS_INODE_BLOCKS];
-
- /**
- * Singly Buffer handle.
- */
- rtems_rfs_buffer_handle singly_buffer;
-
- /**
- * Doubly Buffer handle.
- */
- rtems_rfs_buffer_handle doubly_buffer;
-
-} rtems_rfs_block_map;
-
-/**
- * Is the map dirty ?
- */
-#define rtems_rfs_block_map_is_dirty(_m) ((_m)->dirty)
-
-/**
- * Return the block count in the map.
- */
-#define rtems_rfs_block_map_count(_m) ((_m)->size.count)
-
-/**
- * Return the map's size element.
- */
-#define rtems_rfs_block_map_size(_m) (&((_m)->size))
-
-/**
- * Return the size offset for the map.
- */
-#define rtems_rfs_block_map_size_offset(_m) ((_m)->size.offset)
-
-/**
- * Are we at the last block in the map ?
- */
-#define rtems_rfs_block_map_last(_m) \
- rtems_rfs_block_pos_last_block (&(_m)->bpos, &(_m)->size)
-
-/**
- * Is the position past the end of the block ?
- */
-#define rtems_rfs_block_map_past_end(_m, _p) \
- rtems_rfs_block_pos_past_end (_p, &(_m)->size)
-
-/**
- * Return the current position in the map.
- */
-#define rtems_rfs_block_map_pos(_f, _m) \
- rtems_rfs_block_get_pos (_f, &(_m)->bpos)
-
-/**
- * Return the map's current block number.
- */
-#define rtems_rfs_block_map_block(_m) ((_m)->bpos.bno)
-
-/**
- * Return the map's current block offset.
- */
-#define rtems_rfs_block_map_block_offset(_m) ((_m)->bpos.boff)
-
-/**
- * Set the size offset for the map. The map is tagged as dirty.
- *
- * @param[in] map is a pointer to the open map to set the offset in.
- * @param[in] offset is the offset to set in the map's size.
- */
-static inline void
-rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,
- rtems_rfs_block_off offset)
-{
- map->size.offset = offset;
- map->dirty = true;
-}
-
-/**
- * Set the map's size. The map is tagged as dirty.
- *
- * @param[in] map is a pointer to the open map to set the offset in.
- * @param[in] size is the size to set in the map's size.
- */
-static inline void
-rtems_rfs_block_map_set_size (rtems_rfs_block_map* map,
- rtems_rfs_block_size* size)
-{
- rtems_rfs_block_copy_size (&map->size, size);
- map->dirty = true;
-}
-/**
- * Open a block map. The block map data in the inode is copied into the
- * map. The buffer handles are opened. The block position is set to the start
- * so a seek of offset 0 will return the first block.
- *
- * @param[in] fs is the file system data.
- * @param[in] inode is a pointer to the inode the map belongs to.
- * @param[in] map is a pointer to the map that is opened.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_open (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* inode,
- rtems_rfs_block_map* map);
-
-/**
- * Close the map. The buffer handles are closed and any help buffers are
- * released.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the map that is opened.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_close (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map);
-
-/**
- * Find a block number in the map from the position provided.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the map to search.
- * @param[in] bpos is a pointer to the block position to find.
- * @param[out] block will contain the block in when found.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_find (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map,
- rtems_rfs_block_pos* bpos,
- rtems_rfs_buffer_block* block);
-
-/**
- * Seek around the map.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the map to search.
- * @param[in] offset is the distance to seek. It is signed.
- * @param[out] block will contain the block in when found.
- *
- * @retval 0 Successful operation.
- * @retval ENXIO Failed to seek because it is outside the block map.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_seek (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map,
- rtems_rfs_pos_rel offset,
- rtems_rfs_buffer_block* block);
-
-/**
- * Seek to the next block.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the map to search.
- * @param[out] block will contain the block in when found.
- *
- * @retval 0 Successful operation.
- * @retval ENXIO Failed to seek because it is outside the block map.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map,
- rtems_rfs_buffer_block* block);
-
-/**
- * Grow the block map by the specified number of blocks.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the open map to grow.
- * @param[in] blocks is the number of blocks to grow the map by.
- * @param[out] new_block will contain first of the blocks allocated
- * to the map.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map,
- size_t blocks,
- rtems_rfs_block_no* new_block);
-
-/**
- * Grow the block map by the specified number of blocks.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the open map to shrink.
- * @param[in] blocks is the number of blocks to shrink the map by. If more
- * than the number of blocks the map is emptied.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map,
- size_t blocks);
-
-/**
- * Free all blocks in the map.
- *
- * @param[in] fs is the file system data.
- * @param[in] map is a pointer to the open map to free all blocks from.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,
- rtems_rfs_block_map* map);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-buffer.h b/cpukit/libfs/src/rfs/rtems-rfs-buffer.h
deleted file mode 100644
index 1c603e1827..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-buffer.h
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * @file
- *
- * @ingroup rtems_rfs
- *
- * @brief Maps Blocks to the Media Interface Layers
- *
- * These functions map blocks to the media interface layers.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_BUFFER_H_)
-#define _RTEMS_RFS_BUFFER_H_
-
-#include <errno.h>
-
-#include <rtems/rfs/rtems-rfs-file-system-fwd.h>
-#include <rtems/rfs/rtems-rfs-trace.h>
-
-/**
- * Define the method used to interface to the buffers. It can be libblock or
- * device I/O. The libblock interface is to the RTEMS cache and block devices
- * and device I/O accesses the media via a device file handle.
- */
-#if defined (__rtems__)
-#define RTEMS_RFS_USE_LIBBLOCK 1
-#endif
-
-/**
- * The RTEMS RFS I/O Layering.
- */
-#if RTEMS_RFS_USE_LIBBLOCK
-#include <rtems/bdbuf.h>
-#include <rtems/error.h>
-
-typedef rtems_blkdev_bnum rtems_rfs_buffer_block;
-typedef rtems_bdbuf_buffer rtems_rfs_buffer;
-#define rtems_rfs_buffer_io_request rtems_rfs_buffer_bdbuf_request
-#define rtems_rfs_buffer_io_release rtems_rfs_buffer_bdbuf_release
-
-/**
- * Request a buffer from the RTEMS libblock BD buffer cache.
- */
-int rtems_rfs_buffer_bdbuf_request (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_block block,
- bool read,
- rtems_rfs_buffer** buffer);
-/**
- * Release a buffer to the RTEMS libblock BD buffer cache.
- */
-int rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* handle,
- bool modified);
-#else /* Device I/O */
-typedef uint32_t rtems_rfs_buffer_block;
-typedef struct _rtems_rfs_buffer
-{
- rtems_chain_node link;
- rtems_rfs_buffer_block user;
- void* buffer;
- size_t size;
- uint32_t references;
-} rtems_rfs_buffer;
-#define rtems_rfs_buffer_io_request rtems_rfs_buffer_deviceio_request
-#define rtems_rfs_buffer_io_release rtems_rfs_buffer_deviceio_release
-
-/**
- * Request a buffer from the device I/O.
- */
-int rtems_rfs_buffer_deviceio_request (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_block block,
- bool read,
- rtems_rfs_buffer* buffer);
-/**
- * Release a buffer to the RTEMS libblock BD buffer cache.
- */
-int rtems_rfs_buffer_deviceio_release (rtems_rfs_buffer* handle,
- bool modified);
-#endif
-
-/**
- * RFS Buffer handle.
- */
-typedef struct rtems_rfs_buffer_handle_t
-{
- /**
- * Has the buffer been modifed?
- */
- bool dirty;
-
- /**
- * Block number. The lower layer block number may be absolute and we maybe
- * relative to an offset in the disk so hold locally.
- */
- rtems_rfs_buffer_block bnum;
-
- /**
- * Reference the buffer descriptor.
- */
- rtems_rfs_buffer* buffer;
-
-} rtems_rfs_buffer_handle;
-
-/**
- * The buffer linkage.
- */
-#define rtems_rfs_buffer_link(_h) (&(_h)->buffer->link)
-
-/**
- * Return the start of the data area of the buffer given a handle.
- */
-#define rtems_rfs_buffer_data(_h) ((void*)((_h)->buffer->buffer))
-
-/**
- * Return the size of the buffer given a handle.
- */
-#define rtems_rfs_buffer_size(_h) ((_h)->buffer->size)
-
-/**
- * Return the block number.
- */
-#define rtems_rfs_buffer_bnum(_h) ((_h)->bnum)
-
-/**
- * Return the buffer dirty status.
- */
-#define rtems_rfs_buffer_dirty(_h) ((_h)->dirty)
-
-/**
- * Does the handle have a valid block attached ?
- */
-#define rtems_rfs_buffer_handle_has_block(_h) ((_h)->buffer ? true : false)
-
-/**
- * Mark the buffer as dirty.
- */
-#define rtems_rfs_buffer_mark_dirty(_h) ((_h)->dirty = true)
-
-/**
- * Return the reference count.
- */
-#define rtems_rfs_buffer_refs(_h) ((_h)->buffer->references)
-
-/**
- * Increment the reference count.
- */
-#define rtems_rfs_buffer_refs_up(_h) ((_h)->buffer->references += 1)
-
-/**
- * Decrement the reference count.
- */
-#define rtems_rfs_buffer_refs_down(_h) ((_h)->buffer->references -= 1)
-
-/**
- * Request a buffer. The buffer can be filled with data from the media
- * (read == true) or you can request a buffer to fill with data.
- *
- * @param[in] fs is the file system data.
- * @param[in] handle is the handle the requested buffer is attached to.
- * @param[in] block is the block number.
- * @param[in] read Read the data from the disk.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_handle* handle,
- rtems_rfs_buffer_block block,
- bool read);
-
-/**
- * Release a buffer. If the buffer is dirty the buffer is written to disk. The
- * result does not indicate if the data was successfully written to the disk as
- * this operation may be performed in asynchronously to this release.
- *
- * @param[in] fs is the file system data.
- * @param[in] handle is the handle the requested buffer is attached to.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_handle* handle);
-
-/**
- * Open a handle.
- *
- * @param[in] fs i the file system data.
- * @param[in] handle i the buffer handle to open.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-static inline int
-rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_handle* handle)
-{
- handle->dirty = false;
- handle->bnum = 0;
- handle->buffer = NULL;
- return 0;
-}
-
-/**
- * Close a handle.
- *
- * @param[in] fs is the file system data.
- * @param[in] handle is the buffer handle to close.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-static inline int
-rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_handle* handle)
-{
- rtems_rfs_buffer_handle_release (fs, handle);
- handle->dirty = false;
- handle->bnum = 0;
- handle->buffer = NULL;
- return 0;
-}
-
-/**
- * Open the buffer interface.
- *
- * @param[in] name is a pointer to the device name to the media.
- * @param[in] fs is the file system data.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs);
-
-/**
- * Close the buffer interface.
- *
- * @param[in] fs is the file system data.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_close (rtems_rfs_file_system* fs);
-
-/**
- * Sync all buffers to the media.
- *
- * @param[in] fs is the file system data.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_sync (rtems_rfs_file_system* fs);
-
-/**
- * Set the block size of the device.
- *
- * @param[in] fs is the file system data.
- * @param[in] size is the new block size.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, uint32_t size);
-
-/**
- * Release any chained buffers.
- *
- * @param[in] fs is the file system data.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_buffers_release (rtems_rfs_file_system* fs);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-data.h b/cpukit/libfs/src/rfs/rtems-rfs-data.h
deleted file mode 100644
index 6217e74587..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-data.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Data
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Data.
- *
- * Access data in the correct byte order for the specific target we are running
- * on.
- *
- * @todo Make direct access on matching byte ordered targets.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_DATA_H_)
-#define _RTEMS_RFS_DATA_H_
-
-#include <stdint.h>
-
-/**
- * Helper function to make sure we have a byte pointer.
- */
-#define rtems_rfs_data_ptr(_d) ((uint8_t*)(_d))
-
-/**
- * Helper function to get the data shifted in the correctly sized type.
- */
-#define rtems_rfs_data_get(_d, _t, _o, _s) \
- (((_t)(rtems_rfs_data_ptr (_d)[_o])) << (_s))
-
-/**
- * RFS Read Unsigned 8bit Integer
- */
-#define rtems_rfs_read_u8(_d) \
- (*rtems_rfs_data_ptr (_d))
-
-/**
- * RFS Read Unsigned 16bit Integer
- */
-#define rtems_rfs_read_u16(_d) \
- (rtems_rfs_data_get (_d, uint16_t, 0, 8) | \
- rtems_rfs_data_get (_d, uint16_t, 1, 0))
-
-/**
- * RFS Read Unsigned 32bit Integer
- */
-#define rtems_rfs_read_u32(_d) \
- (rtems_rfs_data_get (_d, uint32_t, 0, 24) | \
- rtems_rfs_data_get (_d, uint32_t, 1, 16) | \
- rtems_rfs_data_get (_d, uint32_t, 2, 8) | \
- rtems_rfs_data_get (_d, uint32_t, 3, 0))
-
-/**
- * RFS Write Unsigned 8bit Integer
- */
-#define rtems_rfs_write_u8(_d, _v) \
- (*rtems_rfs_data_ptr (_d) = (uint8_t)(_v))
-
-/**
- * RFS Write Unsigned 16bit Integer
- */
-#define rtems_rfs_write_u16(_d, _v) \
- do { \
- rtems_rfs_data_ptr (_d)[0] = (uint8_t)(((uint16_t)(_v)) >> 8); \
- rtems_rfs_data_ptr (_d)[1] = (uint8_t)((_v)); \
- } while (0)
-
-/**
- * RFS Write Unsigned 32bit Integer
- */
-#define rtems_rfs_write_u32(_d, _v) \
- do { \
- rtems_rfs_data_ptr (_d)[0] = (uint8_t)(((uint32_t)(_v)) >> 24); \
- rtems_rfs_data_ptr (_d)[1] = (uint8_t)(((uint32_t)(_v)) >> 16); \
- rtems_rfs_data_ptr (_d)[2] = (uint8_t)(((uint32_t)(_v)) >> 8); \
- rtems_rfs_data_ptr (_d)[3] = (uint8_t)((uint32_t)(_v)); \
- } while (0)
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h b/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h
deleted file mode 100644
index d9a8a2004f..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file
- *
- * @brief Provides a 32bit Hash of a String used to Search a Directory
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Directory Hash provides a 32bit hash of a string. This is
- * used to search a directory.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_DIR_HASH_H_)
-#define _RTEMS_RFS_DIR_HAS_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-/**
- * Compute a hash of the key over the length of string.
- *
- * @param[in] key is a pointer to the key to calculate the hash of.
- * @param[in] length is the length of the key in bytes.
- *
- * @retval hash The computed uint32_t hash.
- */
-uint32_t rtems_rfs_dir_hash (const void *key, size_t length);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir.h b/cpukit/libfs/src/rfs/rtems-rfs-dir.h
deleted file mode 100644
index ae3647d03c..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-dir.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Directory Support
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Directory Support
- *
- * This file provides the directory support functions.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_DIR_H_)
-#define _RTEMS_RFS_DIR_H_
-
-#include <dirent.h>
-
-#include <rtems/libio_.h>
-
-#include <rtems/rfs/rtems-rfs-data.h>
-#include <rtems/rfs/rtems-rfs-file-system.h>
-#include <rtems/rfs/rtems-rfs-inode.h>
-
-/**
- * Define the offsets of the fields of a directory entry.
- */
-#define RTEMS_RFS_DIR_ENTRY_INO (0) /**< The ino offset in a directory
- * entry. */
-#define RTEMS_RFS_DIR_ENTRY_HASH (4) /**< The hash offset in a directory
- * entry. The hash is 32bits. We need at
- * least 16bits and given the length and
- * ino field are 4 the extra 2 bytes is
- * not a big overhead.*/
-#define RTEMS_RFS_DIR_ENTRY_LEN (8) /**< The length offset in a directory
- * entry. */
-
-/**
- * The length of the directory entry header.
- */
-#define RTEMS_RFS_DIR_ENTRY_SIZE (4 + 4 + 2)
-
-/**
- * The length when the remainder of the directory block is empty.
- */
-#define RTEMS_RFS_DIR_ENTRY_EMPTY (0xffff)
-
-/**
- * Return the hash of the entry.
- *
- * @param[in] _e is a pointer to the directory entry.
- *
- * @retval hash The uint32_t hash of the entry.
- */
-#define rtems_rfs_dir_entry_hash(_e) \
- rtems_rfs_read_u32 (_e + RTEMS_RFS_DIR_ENTRY_HASH)
-
-/**
- * Set the hash of the entry.
- *
- * @param[in] _e is a pointer to the directory entry.
- *
- * @param[in] _h is the hash of the entry.
- */
-#define rtems_rfs_dir_set_entry_hash(_e, _h) \
- rtems_rfs_write_u32 (_e + RTEMS_RFS_DIR_ENTRY_HASH, _h)
-
-/**
- * Return the ino of the entry.
- *
- * @param[in] _e is a pointer to the directory entry.
- *
- * @retval ino The ino of the entry.
- */
-#define rtems_rfs_dir_entry_ino(_e) \
- rtems_rfs_read_u32 (_e + RTEMS_RFS_DIR_ENTRY_INO)
-
-/**
- * Set the ino of the entry.
- *
- * @param[in] _e is a pointer to the directory entry.
- *
- * @param[in] _i is the ino of the entry.
- */
-#define rtems_rfs_dir_set_entry_ino(_e, _i) \
- rtems_rfs_write_u32 (_e + RTEMS_RFS_DIR_ENTRY_INO, _i)
-
-/**
- * Return the length of the entry.
- *
- * @param[in] _e Pointer to the directory entry.
- *
- * @retval length The length of the entry.
- */
-#define rtems_rfs_dir_entry_length(_e) \
- rtems_rfs_read_u16 (_e + RTEMS_RFS_DIR_ENTRY_LEN)
-
-/**
- * Set the length of the entry.
- *
- * @param[in] _e is a pointer to the directory entry.
- * @param[in] _l is the length.
- */
-#define rtems_rfs_dir_set_entry_length(_e, _l) \
- rtems_rfs_write_u16 (_e + RTEMS_RFS_DIR_ENTRY_LEN, _l)
-
-/**
- * Look up a directory entry in the directory pointed to by the inode. The look
- * up is local to this directory. No need to decend.
- *
- * @param[in] fs is the file system.
- * @param[in] inode is a pointer to the inode of the directory to search.
- * @param[in] name is a pointer to the name to look up. The name may not be
- * nul terminated.
- * @param[in] length is the length of the name.
- * @param[out] ino will be filled in with the inode number
- * if there is no error.
- * @param[in] offset is the offset in the directory for the entry.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* inode,
- const char* name,
- int length,
- rtems_rfs_ino* ino,
- uint32_t* offset);
-
-/**
- * Add an entry to the directory returing the inode number allocated to the
- * entry.
- *
- * @param[in] fs is the file system data.
- * @param[in] dir is a pointer to the directory inode the
- * entry is to be added too.
- * @param[in] name is a pointer to the name of the entry to be added.
- * @param[in] length is the length of the name excluding a terminating 0.
- * @param[in] ino is the ino of the entry.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* dir,
- const char* name,
- size_t length,
- rtems_rfs_ino ino);
-
-/**
- * Del an entry from the directory using an inode number as a key.
- *
- * @param[in] fs is the file system data.
- * @param[in] dir is a pointer to the directory inode the
- * entry is to be deleted from.
- * @param[in] ino is the ino of the entry.
- * @param[in] offset is the offset in the directory of the entry
- * to delete. If 0 search from the start for the ino.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* dir,
- rtems_rfs_ino ino,
- uint32_t offset);
-
-/**
- * Read the directory entry from offset into the directory entry buffer and
- * return the length of space this entry uses in the directory table.
- *
- * @param[in] fs is the file system data.
- * @param[in] dir is a pointer to the direct inode handler.
- * @param[in] offset is the offset in the directory to read from.
- * @param[in] dirent is a ointer to the dirent structure the entry
- * is written into.
- * @param[out] length will contain the length this entry
- * takes in the directory.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_dir_read (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* dir,
- rtems_rfs_pos_rel offset,
- struct dirent* dirent,
- size_t* length);
-
-/**
- * Check if the directory is empty. The current and parent directory entries
- * are ignored.
- *
- * @param[in] fs is the file system data
- * @param[in] dir is a pointer to the directory inode to check.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* dir);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h b/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h
deleted file mode 100644
index e239c25d6f..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File Systems Data Forward Declaration
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Data forward decl.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_FILE_SYSTEM_FWD_H_)
-#define _RTEMS_RFS_FILE_SYSTEM_FWD_H_
-
-/**
- * Forward reference to the file system data.
- */
-struct _rtems_rfs_file_system;
-typedef struct _rtems_rfs_file_system rtems_rfs_file_system;
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file-system.h b/cpukit/libfs/src/rfs/rtems-rfs-file-system.h
deleted file mode 100644
index e00b142532..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-file-system.h
+++ /dev/null
@@ -1,410 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Data
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Data
- *
- * This file defines the file system data.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_FILE_SYSTEM_H_)
-#define _RTEMS_RFS_FILE_SYSTEM_H_
-
-#include <rtems/rfs/rtems-rfs-group.h>
-
-/**
- * Superblock offsets and values.
- */
-#define RTEMS_RFS_SB_OFFSET_MAGIC (0)
-#define RTEMS_RFS_SB_MAGIC (0x28092001)
-#define RTEMS_RFS_SB_OFFSET_VERSION (RTEMS_RFS_SB_OFFSET_MAGIC + 4)
-#define RTEMS_RFS_SB_OFFSET_BLOCK_SIZE (RTEMS_RFS_SB_OFFSET_VERSION + 4)
-#define RTEMS_RFS_SB_OFFSET_BLOCKS (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE + 4)
-#define RTEMS_RFS_SB_OFFSET_BAD_BLOCKS (RTEMS_RFS_SB_OFFSET_BLOCKS + 4)
-#define RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS + 4)
-#define RTEMS_RFS_SB_OFFSET_GROUPS (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH + 4)
-#define RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS (RTEMS_RFS_SB_OFFSET_GROUPS + 4)
-#define RTEMS_RFS_SB_OFFSET_GROUP_INODES (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS + 4)
-#define RTEMS_RFS_SB_OFFSET_INODE_SIZE (RTEMS_RFS_SB_OFFSET_GROUP_INODES + 4)
-
-/**
- * RFS Version Number.
- */
-#define RTEMS_RFS_VERSION (0x00000000)
-
-/**
- * RFS Version Number Mask. The mask determines which bits of the version
- * number indicate compatility issues.
- */
-#define RTEMS_RFS_VERSION_MASK INT32_C(0x00000000)
-
-/**
- * The root inode number. Do not use 0 as this has special meaning in some
- * Unix operating systems.
- */
-#define RTEMS_RFS_ROOT_INO (1)
-
-/**
- * Empty inode number.
- */
-#define RTEMS_RFS_EMPTY_INO (0)
-
-/**
- * The number of blocks in the inode. This number effects the size of the
- * inode and that effects the overhead of the inode tables in a group.
- */
-#define RTEMS_RFS_INODE_BLOCKS (5)
-
-/**
- * The inode overhead is the percentage of space reserved for inodes. It is
- * calculated as the percentage number of blocks in a group. The number of
- * blocks in a group is the number of bits a block can hold.
- */
-#define RTEMS_RFS_INODE_OVERHEAD_PERCENTAGE (1)
-
-/**
- * Number of blocks in the superblock. Yes I know it is a superblock and not
- * superblocks but if for any reason this needs to change it is handled.
- */
-#define RTEMS_RFS_SUPERBLOCK_SIZE (1)
-
-/**
- * The maximum number of buffers held by the file system at any one time.
- */
-#define RTEMS_RFS_FS_MAX_HELD_BUFFERS (5)
-
-/**
- * Absolute position. Make a 64bit value.
- */
-typedef uint64_t rtems_rfs_pos;
-
-/**
- * Relative position. Make a 64bit value.
- */
-typedef int64_t rtems_rfs_pos_rel;
-
-/**
- * Flags to control the file system.
- */
-#define RTEMS_RFS_FS_BITMAPS_HOLD (1 << 0) /**< Do not release bitmaps
- * when finished. Default is
- * off so they are released. */
-#define RTEMS_RFS_FS_NO_LOCAL_CACHE (1 << 1) /**< Do not cache the buffers
- * and release directly to the
- * buffer support layer. The
- * default is to hold buffers. */
-#define RTEMS_RFS_FS_FORCE_OPEN (1 << 2) /**< Force open and ignore any
- * errors. */
-#define RTEMS_RFS_FS_READ_ONLY (1 << 3) /**< Make the mount
- * read-only. Currently not
- * supported. */
-/**
- * RFS File System data.
- */
-struct _rtems_rfs_file_system
-{
- /**
- * Flags to control the file system. Some can be controlled via the ioctl.
- */
- uint32_t flags;
-
- /**
- * The number of blocks in the disk. The size of the disk is the number of
- * blocks by the block size. This should be within a block size of the size
- * returned by the media driver.
- */
- size_t blocks;
-
- /**
- * The size of a block. This must be a multiple of the disk's media block
- * size.
- */
- size_t block_size;
-
- /**
- * The file descriptor for device I/O.
- */
- int device;
-
-#if RTEMS_RFS_USE_LIBBLOCK
- /**
- * The disk device. This is the data about the block device this file system
- * is mounted on. We access the data held in this structure rather than
- * making an extra copy in this structure.
- */
- rtems_disk_device* disk;
-#else
- /**
- * The number of blocks in the file system.
- */
- size_t size;
-#endif
-
- /**
- * Inode count.
- */
- uint32_t inodes;
-
- /**
- * Bad block blocks. This is a table of blocks that have been found to be
- * bad.
- */
- uint32_t bad_blocks;
-
- /**
- * Maximum length of names supported by this file system.
- */
- uint32_t max_name_length;
-
- /**
- * A disk is broken down into a series of groups.
- */
- rtems_rfs_group* groups;
-
- /**
- * Number of groups.
- */
- int group_count;
-
- /**
- * Number of blocks in a group.
- */
- size_t group_blocks;
-
- /**
- * Number of inodes in a group.
- */
- size_t group_inodes;
-
- /**
- * Number of inodes in each block.
- */
- size_t inodes_per_block;
-
- /**
- * Number of block numbers in a block.
- */
- size_t blocks_per_block;
-
- /**
- * Block map single indirect count. This is the block number per block
- * multiplied but the slots in the inode.
- */
- size_t block_map_singly_blocks;
-
- /**
- * Block map double indirect count. This is the block number per block
- * squared and multiplied by the slots in the inode. It is the maximum
- * number of blocks a map (file/directory) can have.
- */
- size_t block_map_doubly_blocks;
-
- /**
- * Number of buffers held before releasing back to the cache.
- */
- uint32_t max_held_buffers;
-
- /**
- * List of buffers attached to buffer handles. Allows sharing.
- */
- rtems_chain_control buffers;
-
- /**
- * Number of buffers held on the buffers list.
- */
- uint32_t buffers_count;
-
- /**
- * List of buffers that need to be released when the processing of a file
- * system request has completed.
- */
- rtems_chain_control release;
-
- /**
- * Number of buffers held on the release list.
- */
- uint32_t release_count;
-
- /**
- * List of buffers that need to be released modified when the processing of a
- * file system request has completed.
- */
- rtems_chain_control release_modified;
-
- /**
- * Number of buffers held on the release modified list.
- */
- uint32_t release_modified_count;
-
- /**
- * List of open shared file node data. The shared node data such as the inode
- * and block map allows a single file to be open more than once.
- */
- rtems_chain_control file_shares;
-
- /**
- * Pointer to user data supplied when opening.
- */
- void* user;
-};
-
-/**
- * Return the flags.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_flags(_f) ((_f)->flags)
-/**
- * Should bitmap buffers be released when finished ?
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_release_bitmaps(_f) (!((_f)->flags & RTEMS_RFS_FS_BITMAPS_HOLD))
-
-/**
- * Are the buffers locally cache or released back to the buffering layer ?
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_no_local_cache(_f) ((_f)->flags & RTEMS_RFS_FS_NO_LOCAL_CACHE)
-
-/**
- * The disk device number.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#if RTEMS_RFS_USE_LIBBLOCK
-#define rtems_rfs_fs_device(_fs) ((_fs)->disk)
-#else
-#define rtems_rfs_fs_device(_fs) ((_fs)->device)
-#endif
-
-/**
- * The size of the disk in blocks.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_blocks(_fs) ((_fs)->blocks)
-
-/**
- * The block size.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_block_size(_fs) ((_fs)->block_size)
-
-/**
- * The number of inodes.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#define rtems_rfs_fs_inodes(_fs) ((_fs)->inodes)
-
-/**
- * Calculate a block in the file system given the group and the block within
- * the group.
- *
- * @param[in] _fs is a pointer to the file system.
- * @param[in] _grp is the group.
- * @param[in] _blk is the block within the group.
- * @return The absolute block number.
- */
-#define rtems_rfs_fs_block(_fs, _grp, _blk) \
- ((((_fs)->group_blocks) * (_grp)) + (_blk) + 1)
-
-/**
- * The media size of the disk in media size blocks.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#if RTEMS_RFS_USE_LIBBLOCK
-#define rtems_rfs_fs_media_blocks(_fs) ((_fs)->disk->size)
-#else
-#define rtems_rfs_fs_media_blocks(_fs) ((_fs)->media_size)
-#endif
-
-/**
- * The media block size. This is the size of a block on disk. For a device I/O
- * this value is 1.
- *
- * @param[in] _fs is a pointer to the file system.
- */
-#if RTEMS_RFS_USE_LIBBLOCK
-#define rtems_rfs_fs_media_block_size(_fs) ((_fs)->disk->media_block_size)
-#else
-#define rtems_rfs_fs_media_block_size(_fs) (1)
-#endif
-
-/**
- * The maximum length of a name supported by the file system.
- */
-#define rtems_rfs_fs_max_name(_fs) ((_fs)->max_name_length)
-
-/**
- * Return the maximum number of blocks in a block map.
- *
- * @return uint32_t The maximum number of blocks possible.
- */
-#define rtems_rfs_fs_max_block_map_blocks(_fs) ((_fs)->block_map_doubly_blocks)
-
-/**
- * Return the user pointer.
- */
-#define rtems_rfs_fs_user(_fs) ((_fs)->user)
-
-/**
- * Return the size of the disk in bytes.
- *
- * @param[in] fs is a pointer to the file system.
- * @return uint64_t The size of the disk in bytes.
- */
-uint64_t rtems_rfs_fs_size(rtems_rfs_file_system* fs);
-
-/**
- * The size of the disk in bytes calculated from the media parameters..
- *
- * @param[in] fs is a pointer to the file system.
- * @return uint64_t The size of the disk in bytes.
- */
-uint64_t rtems_rfs_fs_media_size (rtems_rfs_file_system* fs);
-
-/**
- * Open the file system given a file path.
- *
- * @param[in] name is a pointer to the device to open.
- * @param[in] fs is the file system data filled in by this call.
- * @param[in] user is a pointer to the user data.
- * @param[in] flags is a initial set of user flags for the file system.
- * @param[in] max_held_buffers is the maximum number of buffers the RFS holds.
- *
- * @retval 0 Successful operation.
- * @retval -1 Error. See errno
- */
-int rtems_rfs_fs_open (const char* name,
- void* user,
- uint32_t flags,
- uint32_t max_held_buffers,
- rtems_rfs_file_system** fs);
-
-/**
- * Close the file system.
- *
- * @param[in] fs is the file system data.
- *
- * @retval 0 Successful operation.
- * @retval -1 Error. See errno
- */
-int rtems_rfs_fs_close (rtems_rfs_file_system* fs);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file.h b/cpukit/libfs/src/rfs/rtems-rfs-file.h
deleted file mode 100644
index 772e846143..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-file.h
+++ /dev/null
@@ -1,416 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System File Support
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System File Support
- *
- * This file provides the support functions.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_FILE_H_)
-#define _RTEMS_RFS_FILE_H_
-
-#include <rtems/libio_.h>
-
-#include <rtems/rfs/rtems-rfs-block.h>
-#include <rtems/rfs/rtems-rfs-data.h>
-#include <rtems/rfs/rtems-rfs-file-system.h>
-#include <rtems/rfs/rtems-rfs-inode.h>
-
-/**
- * File data that is shared by various file handles accessing the same file. We
- * hold various inode values common to the file that can change frequently so
- * the inode is not thrashed yet we meet the requirements of the POSIX
- * standard. The stat call needs to check the shared file data.
- */
-typedef struct _rtems_rfs_file_shared
-{
- /**
- * The shared parts are maintained as a list.
- */
- rtems_chain_node link;
-
- /**
- * Reference count the users of this data.
- */
- int references;
-
- /**
- * The inode for the file.
- */
- rtems_rfs_inode_handle inode;
-
- /**
- * The block map for the file. The handle holds the file's position not the
- * map.
- */
- rtems_rfs_block_map map;
-
- /**
- * The size of the file as taken from the inode. The map's size and
- * this size should be the same.
- */
- rtems_rfs_block_size size;
-
- /**
- * The access time. The last time the file was read.
- */
- rtems_rfs_time atime;
-
- /**
- * The modified time. The last time the file was written too.
- */
- rtems_rfs_time mtime;
-
- /**
- * The change time. The last time the inode was written too.
- */
- rtems_rfs_time ctime;
-
- /**
- * Hold a pointer to the file system data so users can take the handle and
- * use it without the needing to hold the file system data pointer.
- */
- rtems_rfs_file_system* fs;
-
-} rtems_rfs_file_shared;
-
-/**
- * Get the atime.
- *
- * @param[in] shared is a pointer to the shared file data.
- *
- * @retval atime The atime.
- */
-static inline rtems_rfs_time
-rtems_rfs_file_shared_get_atime (rtems_rfs_file_shared* shared)
-{
- return shared->atime;
-}
-
-/**
- * Get the mtime.
- *
- * @param[in] shared is a pointer to the shared file data.
- *
- * @retval mtime The mtime.
- */
-static inline rtems_rfs_time
-rtems_rfs_file_shared_get_mtime (rtems_rfs_file_shared* shared)
-{
- return shared->mtime;
-}
-
-/**
- * Get the ctime.
- *
- * @param[in] shared is a pointer to the shared file data.
- *
- * @retval ctime The ctime.
- */
-static inline rtems_rfs_time
-rtems_rfs_file_shared_get_ctime (rtems_rfs_file_shared* shared)
-{
- return shared->ctime;
-}
-
-/**
- * Get the block count.
- *
- * @param[in] shared is a pointer to the shared file data.
- *
- * @retval count The block count.
- */
-static inline uint32_t
-rtems_rfs_file_shared_get_block_count (rtems_rfs_file_shared* shared)
-{
- return shared->size.count;
-}
-
-/**
- * Get the block offset.
- *
- * @param shared is a pointer to the shared file data.
- *
- * @retval offset The block offset.
- */
-static inline uint16_t
-rtems_rfs_file_shared_get_block_offset (rtems_rfs_file_shared* shared)
-{
- return shared->size.offset;
-}
-
-/**
- * Calculate the size of data.
- *
- * @param[in] fs is the file system data.
- * @param[in] shared is a pointer to the shared file data.
- *
- * @retval data The data size in bytes.
- */
-static inline rtems_rfs_pos
-rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs,
- rtems_rfs_file_shared* shared)
-{
- return rtems_rfs_block_get_size (fs, &shared->size);
-}
-
-/**
- * File flags.
- */
-#define RTEMS_RFS_FILE_NO_ATIME_UPDATE (1 << 0) /**< Do not update the atime
- * field in the inode if
- * set. */
-#define RTEMS_RFS_FILE_NO_MTIME_UPDATE (1 << 1) /**< Do not update the mtime
- * field in the inode if
- * set. */
-#define RTEMS_RFS_FILE_NO_LENGTH_UPDATE (1 << 2) /**< Do not update the position
- * field in the inode if
- * set. */
-
-/**
- * File data used to managed an open file.
- */
-typedef struct _rtems_rfs_file_handle
-{
- /**
- * Special flags that can be controlled by the fctrl call.
- */
- int flags;
-
- /**
- * The buffer of data at the file's position.
- */
- rtems_rfs_buffer_handle buffer;
-
- /**
- * The block position of this file handle.
- */
- rtems_rfs_block_pos bpos;
-
- /**
- * Pointer to the shared file data.
- */
- rtems_rfs_file_shared* shared;
-
-} rtems_rfs_file_handle;
-
-/**
- * Access the data in the buffer.
- */
-#define rtems_rfs_file_data(_f) \
- (rtems_rfs_buffer_data (&(_f)->buffer) + (_f)->bpos.boff)
-
-/**
- * Return the file system data pointer given a file handle.
- */
-#define rtems_rfs_file_fs(_f) ((_f)->shared->fs)
-
-/**
- * Return the file's inode handle pointer given a file handle.
- */
-#define rtems_rfs_file_inode(_f) (&(_f)->shared->inode)
-
-/**
- * Return the file's block map pointer given a file handle.
- */
-#define rtems_rfs_file_map(_f) (&(_f)->shared->map)
-
-/**
- * Return the file's block position pointer given a file handle.
- */
-#define rtems_rfs_file_bpos(_f) (&(_f)->bpos)
-
-/**
- * Return the file's block number given a file handle.
- */
-#define rtems_rfs_file_block(_f) ((_f)->bpos.bno)
-
-/**
- * Return the file's block offset given a file handle.
- */
-#define rtems_rfs_file_block_offset(_f) ((_f)->bpos.boff)
-
-/**
- * Set the file's block position given a file position (absolute).
- */
-#define rtems_rfs_file_set_bpos(_f, _p) \
- rtems_rfs_block_get_bpos (rtems_rfs_file_fs (_f), _p, (&(_f)->bpos))
-
-/**
- * Return the file's buffer handle pointer given a file handle.
- */
-#define rtems_rfs_file_buffer(_f) (&(_f)->buffer)
-
-/**
- * Update the access time field of the inode when reading if flagged to do so.
- */
-#define rtems_rfs_file_update_atime(_f) \
- (((_f)->flags & RTEMS_RFS_FILE_NO_ATIME_UPDATE) == 0)
-
-/**
- * Update the modified time field of the inode when writing if flagged to do so.
- */
-#define rtems_rfs_file_update_mtime(_f) \
- (((_f)->flags & RTEMS_RFS_FILE_NO_MTIME_UPDATE) == 0)
-
-/**
- * Update the length field of the inode.
- */
-#define rtems_rfs_file_update_length(_f) \
- (((_f)->flags & RTEMS_RFS_FILE_NO_LENGTH_UPDATE) == 0)
-
-/**
- * Return the shared size varable.
- */
-#define rtems_rfs_file_get_size(_f) \
- (&(_f)->shared->size)
-
-/**
- * Return the size of file.
- */
-#define rtems_rfs_file_size(_f) \
- rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (_f), (_f)->shared)
-
-/**
- * Return the file block count.
- */
-#define rtems_rfs_file_size_count(_f) \
- rtems_rfs_file_shared_get_block_count ((_f)->shared)
-
-/**
- * Return the file block offset.
- */
-#define rtems_rfs_file_size_offset(_f) \
- rtems_rfs_file_shared_get_block_offset ((_f)->shared)
-
-/**
- * Open a file handle.
- *
- * @param[in] fs is the file system.
- * @param[in] ino is the inode number of the file to be opened.
- * @param[out] handle will be filled in with the handle pointer.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_open (rtems_rfs_file_system* fs,
- rtems_rfs_ino ino,
- int oflag,
- rtems_rfs_file_handle** handle);
-
-/**
- * Close an open file handle.
- *
- * @param[in] fs is the file system.
- * @param[in] handle is the open file handle.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_close (rtems_rfs_file_system* fs,
- rtems_rfs_file_handle* handle);
-
-/**
- * Start I/O on a block of a file. This call only requests the block from the
- * media if reading and makes the buffer available to you the via the
- * rtems_rfs_file_data interface after the call. The available amount data is
- * taken from the current file position until the end of the block. The file
- * position is not adujsted until the I/O ends. An I/O request cannot perform
- * I/O past the end of a block so the call returns the amount of data
- * available.
- *
- * @param[in] handle is the file handle.
- * @param[in] available is the amount of data available for I/O.
- * @param[in] read is the I/O operation is a read so the block is read from the media.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_io_start (rtems_rfs_file_handle* handle,
- size_t* available,
- bool read);
-
-/**
- * End the I/O. Any buffers held in the file handle and returned to the
- * cache. If inode updating is not disable and the I/O is a read the atime
- * field is updated and if a write I/O the mtime is updated.
- *
- * If the file's position is updated by the size amount.
- *
- * @param[in] handle is the file handle.
- * @param[in] size is the amount of data read or written.
- * @param[in] read is the I/O was a read if true else it was a write.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_io_end (rtems_rfs_file_handle* handle,
- size_t size,
- bool read);
-
-/**
- * Release the I/O resources without any changes. If data has changed in the
- * buffer and the buffer was not already released as modified the data will be
- * lost.
- *
- * @param[in] handle is the file handle.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_io_release (rtems_rfs_file_handle* handle);
-
-/**
- * The file to the position returning the old position. The position is
- * abolute.
- *
- * @param[in] handle The file handle.
- * @param[in] pos is the position to seek to.
- * @param[out] new_pos will contain the actual position.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_seek (rtems_rfs_file_handle* handle,
- rtems_rfs_pos pos,
- rtems_rfs_pos* new_pos);
-
-/**
- * Set the size of the file to the new size. This can extend the file to a new
- * size.
- *
- * @param[in] handle is the file handle.
- * @param[in] size is the new size of the file.
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,
- rtems_rfs_pos size);
-
-/**
- * Return the shared file data for an ino.
- *
- * @param[in] fs is the file system data.
- * @param[in] ino is the inode number to locate the data for.
- * @return rtems_rfs_file_shared* The shared data or NULL is not located.
- *
- * @retval shared The shared data.
- * @retval NULL No shared file data is located.
- */
-rtems_rfs_file_shared* rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,
- rtems_rfs_ino ino);
-
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-format.h b/cpukit/libfs/src/rfs/rtems-rfs-format.h
deleted file mode 100644
index f65cce1789..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-format.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * @file
- *
- * @ingroup rtems_rfs
- *
- * @brief RTEMS File System Format
- *
- * This function lets you format a disk in the RFS format.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_FORMAT_H_)
-#define _RTEMS_RFS_FORMAT_H_
-
-#include <stddef.h>
-#include <stdbool.h>
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/rfs/rtems-rfs-trace.h>
-
-/**
- * RFS File System Configuration data used to format the file system. For
- * default values leave the field set to 0.
- */
-typedef struct _rtems_rfs_format_config
-{
- /**
- * The size of a block.
- */
- size_t block_size;
-
- /**
- * The number of blocks in a group.
- */
- size_t group_blocks;
-
- /**
- * The number of inodes in a group.
- */
- size_t group_inodes;
-
- /**
- * The percentage overhead allocated to inodes.
- */
- int inode_overhead;
-
- /**
- * The maximum length of a name.
- */
- size_t max_name_length;
-
- /**
- * Initialise the inode tables to all ones.
- */
- bool initialise_inodes;
-
- /**
- * Is the format verbose.
- */
- bool verbose;
-
-} rtems_rfs_format_config;
-
-/**
- * RFS Format command.
- *
- * @param[in] name is the device name to format.
- * @param[in] config is a pointer to the configuration table.
- *
- * @retval -1 Error. See errno.
- * @retval 0 No error. Format successful.
- */
-int rtems_rfs_format (const char* name, const rtems_rfs_format_config* config);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-group.h b/cpukit/libfs/src/rfs/rtems-rfs-group.h
deleted file mode 100644
index 23e6434b2c..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-group.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File Systems Group Management
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Group Management.
- *
- * These functions manage the groups used in the file system.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_GROUP_H_)
-#define _RTEMS_RFS_GROUP_H_
-
-/**
- * @ingroup rtems_rfs
- *
- * RTEMS File System Group Management
- */
-/**@{*/
-
-#include <rtems/rfs/rtems-rfs-trace.h>
-#include <rtems/rfs/rtems-rfs-bitmaps.h>
-#include <rtems/rfs/rtems-rfs-buffer.h>
-
-/**
- * Block allocations for a group on disk.
- */
-#define RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK (0)
-#define RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK (1)
-#define RTEMS_RFS_GROUP_INODE_BLOCK (2)
-
-/**
- * @brief Creates bit allocator for blocks in the group simpler.
- *
- * A group is a selection of blocks on the disk. Typically the number of blocks
- * in a group is determined by the number of bits a block holds. This makes the
- * bit allocator for blocks in the group simpler plus is allows a simple way to
- * localise access to files and directories.
- */
-typedef struct _rtems_rfs_group
-{
- /**
- * Base block number.
- */
- rtems_rfs_buffer_block base;
-
- /**
- * The number of blocks in the group. Groups may be different sizes.
- */
- size_t size;
-
- /**
- * The block bitmap control.
- */
- rtems_rfs_bitmap_control block_bitmap;
-
- /**
- * The handle to the block bitmap buffer.
- */
- rtems_rfs_buffer_handle block_bitmap_buffer;
-
- /**
- * The inode bitmap control.
- */
- rtems_rfs_bitmap_control inode_bitmap;
-
- /**
- * The handle to the inode bitmap buffer.
- */
- rtems_rfs_buffer_handle inode_bitmap_buffer;
-
-} rtems_rfs_group;
-
-/**
- * Return the disk's block for a block in a group.
- */
-#define rtems_rfs_group_block(_g, _b) (((_g)->base) + (_b))
-
-/**
- * Return the file system inode for a inode in a group.
- */
-#define rtems_rfs_group_inode(_f, _g, _i) \
- (((_f)->group_inodes * (_g)) + (_i) + RTEMS_RFS_ROOT_INO)
-
-/**
- * @brief Open a group.
- *
- * Allocate all the resources including the bitmaps.
- *
- * @param fs The file system.
- * @param base The base block number.
- * @param size The number of blocks in the group.
- * @param group Reference to the group to open.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_open (rtems_rfs_file_system* fs,
- rtems_rfs_buffer_block base,
- size_t size,
- size_t inodes,
- rtems_rfs_group* group);
-
-/**
- * @brief Close a group.
- *
- * Release all resources the group holds.
- *
- * @param fs The file system.
- * @param group The group to close.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_close (rtems_rfs_file_system* fs,
- rtems_rfs_group* group);
-
-/**
- * @brief Allocate an inode or block.
- *
- * The groups are searched to find the next
- * available inode or block.
- *
- * @param fs The file system data.
- * @param goal The goal to seed the bitmap search.
- * @param inode If true allocate an inode else allocate a block.
- * @param result The allocated bit in the bitmap.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,
- rtems_rfs_bitmap_bit goal,
- bool inode,
- rtems_rfs_bitmap_bit* result);
-
-/**
- * @brief Free the group allocated bit.
- *
- * @param fs The file system data.
- * @param inode If true the number to free is an inode else it is a block.
- * @param block The inode or block number to free.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,
- bool inode,
- rtems_rfs_bitmap_bit no);
-
-/**
- * @brief Test the group allocated bit.
- *
- * @param fs The file system data.
- * @param inode If true the number to free is an inode else it is a block.
- * @param block The inode or block number to free.
- * @param state Return the state of the bit.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
- bool inode,
- rtems_rfs_bitmap_bit no,
- bool* state);
-
-/**
- * @brief Determine the number of blocks and inodes used.
- *
- * @param fs The file system data.
- * @param blocks The number of blocks used.
- * @param inodes The number of inodes used.
- * @retval int The error number (errno). No error if 0.
- */
-int rtems_rfs_group_usage (rtems_rfs_file_system* fs,
- size_t* blocks,
- size_t* inodes);
-
-/** @} */
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-inode.h b/cpukit/libfs/src/rfs/rtems-rfs-inode.h
deleted file mode 100644
index 95861ea8a7..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-inode.h
+++ /dev/null
@@ -1,728 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Information Node
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Information Node.
- *
- * The information nodes hold the data about all nodes in the file system.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_INODE_H_)
-#define _RTEMS_RFS_INODE_H_
-
-#include <sys/stat.h>
-
-#include <rtems/rfs/rtems-rfs-data.h>
-#include <rtems/rfs/rtems-rfs-file-system.h>
-
-/**
- * The RFS mode definitions. Currently map to the C library ones.
- */
-#define RTEMS_RFS_S_ISUID S_ISUID /**< Set user id on execution */
-#define RTEMS_RFS_S_ISGID S_ISGID /**< Set group id on execution */
-#define RTEMS_RFS_S_ISVTX S_ISVTX /**< Save swapped text even after use */
-#define RTEMS_RFS_S_IREAD S_IREAD /**< Read permission, owner */
-#define RTEMS_RFS_S_IWRITE S_IWRITE /**< Write permission, owner */
-#define RTEMS_RFS_S_IEXEC S_IEXEC /**< Execute/search permission, owner */
-#define RTEMS_RFS_S_ENFMT S_ENFMT /**< Enforcement-mode locking */
-#define RTEMS_RFS_S_IFMT S_IFMT /**< Type of file */
-#define RTEMS_RFS_S_IFDIR S_IFDIR /**< Directory */
-#define RTEMS_RFS_S_IFCHR S_IFCHR /**< Character special */
-#define RTEMS_RFS_S_IFBLK S_IFBLK /**< Block special */
-#define RTEMS_RFS_S_IFREG S_IFREG /**< Regular */
-#define RTEMS_RFS_S_IFLNK S_IFLNK /**< Symbolic link */
-#define RTEMS_RFS_S_IFSOCK S_IFSOCK /**< Socket */
-#define RTEMS_RFS_S_IFIFO S_IFIFO /**< Fifo */
-#define RTEMS_RFS_S_IRWXU S_IRWXU
-#define RTEMS_RFS_S_IRUSR S_IRUSR /**< Read permission, owner */
-#define RTEMS_RFS_S_IWUSR S_IWUSR /**< Write permission, owner */
-#define RTEMS_RFS_S_IXUSR S_IXUSR /**< Execute/search permission, owner */
-#define RTEMS_RFS_S_IRWXG S_IRWXG
-#define RTEMS_RFS_S_IRGRP S_IRGRP /**< Read permission, group */
-#define RTEMS_RFS_S_IWGRP S_IWGRP /**< Write permission, grougroup */
-#define RTEMS_RFS_S_IXGRP S_IXGRP /**< Execute/search permission, group */
-#define RTEMS_RFS_S_IRWXO S_IRWXO
-#define RTEMS_RFS_S_IROTH S_IROTH /**< Read permission, other */
-#define RTEMS_RFS_S_IWOTH S_IWOTH /**< Write permission, other */
-#define RTEMS_RFS_S_IXOTH S_IXOTH /**< Execute/search permission, other */
-
-#define RTEMS_RFS_S_ISBLK(m) S_ISBLK(m)
-#define RTEMS_RFS_S_ISCHR(m) S_ISCHR(m)
-#define RTEMS_RFS_S_ISDIR(m) S_ISDIR(m)
-#define RTEMS_RFS_S_ISFIFO(m) S_ISFIFO(m)
-#define RTEMS_RFS_S_ISREG(m) S_ISREG(m)
-#define RTEMS_RFS_S_ISLNK(m) S_ISLNK(m)
-#define RTEMS_RFS_S_ISSOCK(m) S_ISSOCK(m)
-
-/**
- * Permissions of a symlink.
- */
-#define RTEMS_RFS_S_SYMLINK \
- RTEMS_RFS_S_IFLNK | RTEMS_RFS_S_IRWXU | RTEMS_RFS_S_IRWXG | RTEMS_RFS_S_IRWXO
-
-/**
- * The inode number or ino.
- */
-typedef uint32_t rtems_rfs_ino;
-
-/**
- * The time in the file system.
- */
-typedef uint32_t rtems_rfs_time;
-
-/**
- * The size of a block value on disk. This include the inodes and indirect
- * tables.
- */
-typedef uint32_t rtems_rfs_inode_block;
-
-/**
- * The size of the data name field in the inode.
- */
-#define RTEMS_RFS_INODE_DATA_NAME_SIZE \
- (RTEMS_RFS_INODE_BLOCKS * sizeof (rtems_rfs_inode_block))
-
-/**
- * The inode.
- */
-typedef struct _rtems_rfs_inode
-{
- /**
- * The number of links to the inode.
- */
- uint16_t links;
-
- /**
- * The mode of the node.
- */
- uint16_t mode;
-
- /**
- * The owner of the node.
- */
- uint32_t owner;
-
- /**
- * Reserved.
- */
- uint16_t flags;
-
- /**
- * Amount of data held in the last block data.
- */
- uint16_t block_offset;
-
- /**
- * Number of blocks held by this file.
- */
- uint32_t block_count;
-
- /**
- * The access time. The last time the file was read.
- */
- rtems_rfs_time atime;
-
- /**
- * The modified time. The last time the file was written too.
- */
- rtems_rfs_time mtime;
-
- /**
- * The change time. The last time the inode was written too.
- */
- rtems_rfs_time ctime;
-
- /**
- * Blocks. These are the block numbers used by the node or table of
- * nodes. The flags indicate the mode the blocks are being held in. In the
- * direct table mode the blocks are entries in this table. In the indirect
- * mode the blocks point to blocks that hold the block numbers. The data can
- * also be a name if it fits. For example a symbolic link.
- */
- union
- {
- rtems_rfs_inode_block blocks[RTEMS_RFS_INODE_BLOCKS];
- uint8_t name[RTEMS_RFS_INODE_DATA_NAME_SIZE];
- } data;
-
- /**
- * The last block map block. Used as the goal when allocating a new block for
- * use in the map.
- */
- rtems_rfs_inode_block last_map_block;
-
- /**
- * The last data block. Used as the goal when allocating a new block.
- */
- rtems_rfs_inode_block last_data_block;
-
-} rtems_rfs_inode;
-
-/**
- * The size of an inode.
- */
-#define RTEMS_RFS_INODE_SIZE (sizeof (rtems_rfs_inode))
-
-/**
- * RFS Inode Handle.
- */
-typedef struct _rtems_rfs_inode_handle
-{
- /**
- * Handles can be linked as a list for easy processing.
- */
- rtems_chain_node link;
-
- /**
- * The ino for this handle.
- */
- rtems_rfs_ino ino;
-
- /**
- * The pointer to the inode.
- */
- rtems_rfs_inode* node;
-
- /**
- * The buffer that contains this inode.
- */
- rtems_rfs_buffer_handle buffer;
-
- /**
- * The block number that holds the inode.
- */
- rtems_rfs_buffer_block block;
-
- /**
- * The offset into the block for the inode.
- */
- int offset;
-
- /**
- * Number of load requests.
- */
- int loads;
-
-} rtems_rfs_inode_handle;
-
-/**
- * Is the inode loaded ?
- */
-#define rtems_rfs_inode_is_loaded(_h) ((_h)->node)
-
-/**
- * Get the inode ino for a handle.
- */
-#define rtems_rfs_inode_ino(_h) ((_h)->ino)
-
-/**
- * Get the link count.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval links The link count.
- */
-static inline uint16_t
-rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)
-{
- uint16_t links;
- links = rtems_rfs_read_u16 (&handle->node->links);
- if (links == 0xffff)
- links = 0;
- return links;
-}
-
-/**
- * Set the link count.
- *
- * @param[in] handle is the inode handle.
- * @param[in] links are the links.
- */
-static inline void
-rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
-{
- rtems_rfs_write_u16 (&handle->node->links, links);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the flags.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval flags The flags.
- */
-static inline uint16_t
-rtems_rfs_inode_get_flags (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u16 (&handle->node->flags);
-}
-
-/**
- * Set the flags.
- *
- * @param[in] handle is the inode handle.
- * @param[in] flags are the flags.
- */
-static inline void
-rtems_rfs_inode_set_flags (rtems_rfs_inode_handle* handle, uint16_t flags)
-{
- rtems_rfs_write_u16 (&handle->node->flags, flags);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the mode.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval mode The mode.
- */
-static inline uint16_t
-rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u16 (&handle->node->mode);
-}
-
-/**
- * Set the mode.
- *
- * @param[in] handle is the inode handle.
- * @param[in] mode is the mode.
- */
-static inline void
-rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode)
-{
- rtems_rfs_write_u16 (&handle->node->mode, mode);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the user id.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval uid The used id.
- */
-static inline uint16_t
-rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;
-}
-
-/**
- * Get the group id.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval gid The grpup id.
- */
-static inline uint16_t
-rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)
-{
- return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;
-}
-
-/**
- * Set the user id and group id.
- *
- * @param[in] handle is the inode handle.
- * @param[in] uid is the user id (uid).
- * @param[in] gid is the group id (gid).
- */
-static inline void
-rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle,
- uint16_t uid, uint16_t gid)
-{
- rtems_rfs_write_u32 (&handle->node->owner, (((uint32_t) gid) << 16) | uid);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the block offset.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval offset The block offset.
- */
-static inline uint16_t
-rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u16 (&handle->node->block_offset);
-}
-
-/**
- * Set the block offset.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block_count is the block offset.
- */
-static inline void
-rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,
- uint16_t block_offset)
-{
- rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the block count.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval count The block count.
- */
-static inline uint32_t
-rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->block_count);
-}
-
-/**
- * Set the block count.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block_count is the block count.
- */
-static inline void
-rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
-{
- rtems_rfs_write_u32 (&handle->node->block_count, block_count);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the atime.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval atime The atime.
- */
-static inline rtems_rfs_time
-rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->atime);
-}
-
-/**
- * Set the atime.
- *
- * @param[in] handle is the inode handle.
- * @param[in] atime The atime.
- */
-static inline void
-rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,
- rtems_rfs_time atime)
-{
- rtems_rfs_write_u32 (&handle->node->atime, atime);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the mtime.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval mtime The mtime.
- */
-static inline rtems_rfs_time
-rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->mtime);
-}
-
-/**
- * Set the mtime.
- *
- * @param[in] handle is the inode handle.
- * @param[in] mtime The mtime.
- */
-static inline void
-rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,
- rtems_rfs_time mtime)
-{
- rtems_rfs_write_u32 (&handle->node->mtime, mtime);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the ctime.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval ctime The ctime.
- */
-static inline rtems_rfs_time
-rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->ctime);
-}
-
-/**
- * Set the ctime.
- *
- * @param[in] handle is the inode handle.
- * @param[in] ctime The ctime.
- */
-static inline void
-rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,
- rtems_rfs_time ctime)
-{
- rtems_rfs_write_u32 (&handle->node->ctime, ctime);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the block number.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block is the block number to return.
- *
- * @retval block The block number.
- */
-static inline uint32_t
-rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block)
-{
- return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);
-}
-
-/**
- * Set the block number for a given block index.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block is the block index.
- * @param[in] bno is the block number.
- */
-static inline void
-rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
-{
- rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the last map block from the inode.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval block The last map block number.
- */
-static inline uint32_t
-rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->last_map_block);
-}
-
-/**
- * Set the last map block.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block_count is last map block number.
- */
-static inline void
-rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
-{
- rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Get the last data block from the inode.
- *
- * @param[in] handle is the inode handle.
- *
- * @retval block The last data block number.
- *
- */
-static inline uint32_t
-rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)
-{
- return rtems_rfs_read_u32 (&handle->node->last_data_block);
-}
-
-/**
- * Set the last data block.
- *
- * @param[in] handle is the inode handle.
- * @param[in] block_count is the last data block number.
- */
-static inline void
-rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
-{
- rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
- rtems_rfs_buffer_mark_dirty (&handle->buffer);
-}
-
-/**
- * Allocate an inode number and return it.
- *
- * @param[in] fs is the file system data.
- * @param[out] ino will contain the ino.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_alloc (rtems_rfs_file_system* fs,
- rtems_rfs_bitmap_bit goal,
- rtems_rfs_ino* ino);
-
-/**
- * Free an inode.
- *
- * @param[in] fs is the file system data.
- * @param[in] ino is the ino too free.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_free (rtems_rfs_file_system* fs,
- rtems_rfs_ino ino);
-
-/**
- * Open the inode handle. This reads the inode into the buffer and sets the
- * data pointer. All data is in media byte order and needs to be accessed via
- * the supporting calls.
- *
- * @param[in] fs is the file system.
- * @param[in] ino is the inode number.
- * @param[in] handle is the handle to the inode we are opening.
- * @param[in] load If true load the inode into memory from the media.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_open (rtems_rfs_file_system* fs,
- rtems_rfs_ino ino,
- rtems_rfs_inode_handle* handle,
- bool load);
-
-/**
- * The close inode handle. All opened inodes need to be closed.
- *
- * @param[in] fs is the file system.
- * @param[in] handle is the handle to close.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_close (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* handle);
-
-/**
- * Load the inode into memory.
- *
- * @param[in] fs is the file system.
- * @param[in] handle is the inode handle to load.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_load (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* handle);
-
-/**
- * Unload the inode from memory.
- *
- * @param[in] fs is the file system.
- * @param[in] handle is the inode handle to unload.
- * @param[in] update_ctime Update the ctime field of the inode.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_unload (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* handle,
- bool update_ctime);
-
-/**
- * Create an inode allocating, initialising and adding an entry to the parent
- * directory.
- *
- * @param[in] fs is the file system data.
- * @param[in] parent is the parent inode number to add the directory entry to.
- * @param[in] name is a pointer to the name of the directory entryinode
- * to create.
- *
- */
-int rtems_rfs_inode_create (rtems_rfs_file_system* fs,
- rtems_rfs_ino parent,
- const char* name,
- size_t length,
- uint16_t mode,
- uint16_t links,
- uid_t uid,
- gid_t gid,
- rtems_rfs_ino* ino);
-
-/**
- * Delete the inode eraseing it and release the buffer to commit the write. You
- * need to load the inode again if you wish to use it again.
- *
- * @param[in] fs is the file system.
- * @param[in] handle is the inode handle to erase.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_delete (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* handle);
-
-/**
- * Initialise a new inode.
- *
- * @param[in] handle is the inode handle to initialise.
- * @param[in] links are the number of links to the inode.
- * @param[in] mode is the inode mode.
- * @param[in] uid is the user id.
- * @param[in] gid is the group id.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_initialise (rtems_rfs_inode_handle* handle,
- uint16_t links,
- uint16_t mode,
- uid_t uid,
- gid_t gid);
-
-/**
- * Time stamp the inode with the current time. The ctime field is hanlded
- * automatically.
- *
- * @param[in] handle is the inode handle.
- * @param[in] atime Update the atime field.
- * @param[in] mtime UPdate the mtime field.
- *
- * @retval 0 Successful operation.
- * @retval ENXIO No inode is loaded.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,
- bool atime,
- bool mtime);
-
-/**
- * Calculate the size of data attached to the inode.
- *
- * @param[in] fs is the file system data.
- * @param[in] handle is the inode handle.
- *
- * @retval size The data size in bytes in the block map attched to the inode.
- */
-rtems_rfs_pos rtems_rfs_inode_get_size (rtems_rfs_file_system* fs,
- rtems_rfs_inode_handle* handle);
-
-#endif
-
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-link.h b/cpukit/libfs/src/rfs/rtems-rfs-link.h
deleted file mode 100644
index d30814aaff..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-link.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Link Support
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Link Support
- *
- * This file provides the link support functions.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_LINK_H_)
-#define _RTEMS_RFS_LINK_H_
-
-#include <dirent.h>
-
-#include <rtems/rfs/rtems-rfs-file-system.h>
-#include <rtems/rfs/rtems-rfs-inode.h>
-
-/**
- * Directory unlink modes.
- */
-typedef enum rtems_rfs_unlink_dir_e
-{
- rtems_rfs_unlink_dir_denied, /**< Not allowed to unlink a directory. */
- rtems_rfs_unlink_dir_if_empty, /**< Unlink if the directory is empty. */
- rtems_rfs_unlink_dir_allowed /**< Unlinking of directories is allowed. */
-} rtems_rfs_unlink_dir;
-
-/**
- * Create a link. Do not link directories unless renaming or you will create
- * loops in the file system.
- *
- * @param[in] fs is the file system.
- * @param[in] name is a pointer to the name of the link.
- * @param[in] length is the length of the name.
- * @param[in] parent is the inode number of the parent directory.
- * @param[in] target is the inode of the target.
- * @param[in] link_dir If true directories can be linked. Useful when
- * renaming.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_link (rtems_rfs_file_system* fs,
- const char* name,
- int length,
- rtems_rfs_ino parent,
- rtems_rfs_ino target,
- bool link_dir);
-
-/**
- * Unlink the node from the parent directory. A directory offset for the
- * target entry is required because links cause a number of inode numbers to
- * appear in a single directory so scanning does not work.
- *
- * @param[in] fs is the file system.
- * @param[in] parent is the inode number of the parent directory.
- * @param[in] target is the inode of the target.
- * @param[in] doff is the parent directory entry offset for the target entry.
- * @param[in] dir_mode is the directory unlink mode.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_unlink (rtems_rfs_file_system* fs,
- rtems_rfs_ino parent,
- rtems_rfs_ino target,
- uint32_t doff,
- rtems_rfs_unlink_dir dir_mode);
-
-/**
- * Symbolic link is an inode that has a path attached.
- *
- * @param[in] fs is the file system data.
- * @param[in] name is a pointer to the name of the node.
- * @param[in] length is the length of the name of the node.
- * @param[in] link is a pointer to the link path attached to the
- * symlink inode.
- * @param[in] link_length is the length of the link path.
- * @param[in] parent is the parent inode number.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_symlink (rtems_rfs_file_system* fs,
- const char* name,
- int length,
- const char* link,
- int link_length,
- uid_t uid,
- gid_t gid,
- rtems_rfs_ino parent);
-
-/**
- * Read a symbolic link into the provided buffer returning the link of link
- * name.
- *
- * @param[in] fs is the file system data.
- * @param[in] link is the link inode number to read.
- * @param[in] path is a pointer to the buffer to write the link path into.
- * @param[in] size is the size of the buffer.
- * @param[out] length will contain the length of the link path.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_rfs_symlink_read (rtems_rfs_file_system* fs,
- rtems_rfs_ino link,
- char* path,
- size_t size,
- size_t* length);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-mutex.h b/cpukit/libfs/src/rfs/rtems-rfs-mutex.h
deleted file mode 100644
index 606fd53233..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-mutex.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * @file
- *
- * @brief RTEMS File System Mutex
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File System Mutex.
- *
- * It may be suprising we abstract this for the RTEMS file system but this code
- * is designed to be run on host operating systems.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_MUTEX_H_)
-#define _RTEMS_RFS_MUTEX_H_
-
-#include <errno.h>
-
-#include <rtems/rfs/rtems-rfs-trace.h>
-
-#if __rtems__
-#include <rtems.h>
-#include <rtems/error.h>
-#endif
-
-/**
- * RFS Mutex type.
- */
-#if __rtems__
-typedef rtems_id rtems_rfs_mutex;
-#else
-typedef uint32_t rtems_rfs_mutex; /* place holder */
-#endif
-
-/**
- * @brief Create the mutex.
- *
- * @param [in] mutex is pointer to the mutex handle returned to the caller.
- *
- * @retval 0 Successful operation.
- * @retval EIO An error occurred.
- *
- */
-int rtems_rfs_mutex_create (rtems_rfs_mutex* mutex);
-
-/**
- * @brief Destroy the mutex.
- *
- * @param[in] mutex Reference to the mutex handle returned to the caller.
- *
- * @retval 0 Successful operation.
- * @retval EIO An error occurred.
- */
-int rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex);
-
-/**
- * @brief Lock the mutex.
- *
- * @param[in] mutex is a pointer to the mutex to lock.
- *
- * @retval 0 Successful operation.
- * @retval EIO An error occurred.
- */
-static inline int
-rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)
-{
-#if __rtems__
- rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
- if (sc != RTEMS_SUCCESSFUL)
- {
-#if RTEMS_RFS_TRACE
- if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
- printf ("rtems-rfs: mutex: obtain failed: %s\n",
- rtems_status_text (sc));
-#endif
- return EIO;
- }
-#endif
- return 0;
-}
-
-/**
- * @brief Unlock the mutex.
- *
- * @param[in] mutex is a pointer to the mutex to unlock.
- *
- * @retval 0 Successful operation.
- * @retval EIO An error occurred.
- */
-static inline int
-rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)
-{
-#if __rtems__
- rtems_status_code sc = rtems_semaphore_release (*mutex);
- if (sc != RTEMS_SUCCESSFUL)
- {
-#if RTEMS_RFS_TRACE
- if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))
- printf ("rtems-rfs: mutex: release failed: %s\n",
- rtems_status_text (sc));
-#endif
- return EIO;
- }
-#endif
- return 0;
-}
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-shell.h b/cpukit/libfs/src/rfs/rtems-rfs-shell.h
deleted file mode 100644
index c2e1108a47..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-shell.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file
- *
- * @ingroup rtems_rfs
- * @brief RTEMS File Systems Shell Commands
- *
- * RTEMS File Systems Shell commands provide a CLI interface to support and
- * development of the RFS file system.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined (_RTEMS_RFS_SHELL_H_)
-#define _RTEMS_RFS_SHELL_H_
-
-#include <stddef.h>
-#include <stdbool.h>
-#include <stdint.h>
-
-/**
- * The shell command for the RFS debugger.
- *
- * @param[in] argc is the argument count.
- * @param[in] argv is a pointer to the argument variables.
- *
- * @retval 0 Successful operation.
- * @retval error_code An error occurred.
- */
-int rtems_shell_debugrfs (int argc, char *argv[]);
-
-/**
- * The shell command for formatting an RFS file system.
- *
- * @param[in] argc is the argument count.
- * @param[in] argv is a pointer to the argument variables.
- *
- * @retval 0 Successful operation.
- * @retval 1 An error occurred.
- */
-int rtems_shell_rfs_format (int argc, char* argv[]);
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-trace.h b/cpukit/libfs/src/rfs/rtems-rfs-trace.h
deleted file mode 100644
index 4d6d0c9ddb..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs-trace.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * @file
- *
- * @brief Manages the Trace and Debugging Features of the
- * RTEMS RFS File System
- *
- * @ingroup rtems_rfs
- *
- * RTEMS File Systems Trace manages the trace and debugging features of the
- * RTEMS RFS file system. The design allows all tracing code and strings to be
- * removed from the target code for small footprint systems.
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-
-#if !defined (_RTEMS_RFS_TRACE_H_)
-#define _RTEMS_RFS_TRACE_H_
-
-#include <stddef.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-
-/**
- * Is tracing enabled ?
- */
-#if !defined (RTEMS_RFS_TRACE)
-#define RTEMS_RFS_TRACE 1
-#endif
-
-/**
- * The type of the mask.
- */
-typedef uint64_t rtems_rfs_trace_mask;
-
-/**
- * List of tracing bits for the various parts of the file system.
- */
-#define RTEMS_RFS_TRACE_ALL (0xffffffffffffffffULL)
-#define RTEMS_RFS_TRACE_OPEN (1ULL << 0)
-#define RTEMS_RFS_TRACE_CLOSE (1ULL << 1)
-#define RTEMS_RFS_TRACE_MUTEX (1ULL << 2)
-#define RTEMS_RFS_TRACE_BUFFER_OPEN (1ULL << 3)
-#define RTEMS_RFS_TRACE_BUFFER_CLOSE (1ULL << 4)
-#define RTEMS_RFS_TRACE_BUFFER_SYNC (1ULL << 5)
-#define RTEMS_RFS_TRACE_BUFFER_RELEASE (1ULL << 6)
-#define RTEMS_RFS_TRACE_BUFFER_CHAINS (1ULL << 7)
-#define RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST (1ULL << 8)
-#define RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE (1ULL << 9)
-#define RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE (1ULL << 10)
-#define RTEMS_RFS_TRACE_BUFFERS_RELEASE (1ULL << 11)
-#define RTEMS_RFS_TRACE_BLOCK_FIND (1ULL << 12)
-#define RTEMS_RFS_TRACE_BLOCK_MAP_GROW (1ULL << 13)
-#define RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK (1ULL << 14)
-#define RTEMS_RFS_TRACE_GROUP_OPEN (1ULL << 15)
-#define RTEMS_RFS_TRACE_GROUP_CLOSE (1ULL << 16)
-#define RTEMS_RFS_TRACE_GROUP_BITMAPS (1ULL << 17)
-#define RTEMS_RFS_TRACE_INODE_OPEN (1ULL << 18)
-#define RTEMS_RFS_TRACE_INODE_CLOSE (1ULL << 19)
-#define RTEMS_RFS_TRACE_INODE_LOAD (1ULL << 20)
-#define RTEMS_RFS_TRACE_INODE_UNLOAD (1ULL << 21)
-#define RTEMS_RFS_TRACE_INODE_CREATE (1ULL << 22)
-#define RTEMS_RFS_TRACE_INODE_DELETE (1ULL << 23)
-#define RTEMS_RFS_TRACE_LINK (1ULL << 24)
-#define RTEMS_RFS_TRACE_UNLINK (1ULL << 25)
-#define RTEMS_RFS_TRACE_DIR_LOOKUP_INO (1ULL << 26)
-#define RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK (1ULL << 27)
-#define RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND (1ULL << 28)
-#define RTEMS_RFS_TRACE_DIR_ADD_ENTRY (1ULL << 29)
-#define RTEMS_RFS_TRACE_DIR_DEL_ENTRY (1ULL << 30)
-#define RTEMS_RFS_TRACE_DIR_READ (1ULL << 31)
-#define RTEMS_RFS_TRACE_DIR_EMPTY (1ULL << 32)
-#define RTEMS_RFS_TRACE_SYMLINK (1ULL << 33)
-#define RTEMS_RFS_TRACE_SYMLINK_READ (1ULL << 34)
-#define RTEMS_RFS_TRACE_FILE_OPEN (1ULL << 35)
-#define RTEMS_RFS_TRACE_FILE_CLOSE (1ULL << 36)
-#define RTEMS_RFS_TRACE_FILE_IO (1ULL << 37)
-#define RTEMS_RFS_TRACE_FILE_SET (1ULL << 38)
-
-/**
- * Call to check if this part is bring traced. If RTEMS_RFS_TRACE is defined to
- * 0 the code is dead code elminiated when built with -Os, -O2, or higher.
- *
- * @param[in] mask is the part of the API to trace.
- *
- * @retval true Tracing is active for the mask.
- * @retval false Do not trace.
- */
-#if RTEMS_RFS_TRACE
-bool rtems_rfs_trace (rtems_rfs_trace_mask mask);
-#else
-#define rtems_rfs_trace(_m) (0)
-#endif
-
-/**
- * Set the mask.
- *
- * @param[in] mask are the mask bits to set.
- *
- * @retval mask The previous mask.
- */
-#if RTEMS_RFS_TRACE
-rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask);
-#else
-#define rtems_rfs_trace_set_mask(_m)
-#endif
-
-/**
- * Clear the mask.
- *
- * @param[in] mask are the mask bits to clear.
- *
- * @retval mask The previous mask.
- */
-#if RTEMS_RFS_TRACE
-rtems_rfs_trace_mask rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask);
-#else
-#define rtems_rfs_trace_clear_mask(_m)
-#endif
-
-/**
- * Add shell trace shell command.
- */
-#if RTEMS_RFS_TRACE
-int rtems_rfs_trace_shell_command (int argc, char *argv[]);
-#endif
-
-#endif
diff --git a/cpukit/libfs/src/rfs/rtems-rfs.h b/cpukit/libfs/src/rfs/rtems-rfs.h
deleted file mode 100644
index 958f9a636b..0000000000
--- a/cpukit/libfs/src/rfs/rtems-rfs.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @file
- *
- * @brief RFS File system Initialization
- * @ingroup rtems_rfs
- *
- * RTEMS File System
- *
- */
-
-/*
- * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if !defined(RTEMS_RFS_DEFINED)
-#define RTEMS_RFS_DEFINED
-
-#include <rtems.h>
-#include <rtems/fs.h>
-
-/**
- * @defgroup rtems_rfs RTEMS File System Group Management
- *
- * @ingroup FileSystemTypesAndMount
- */
-/**@{*/
-
-/**
- * Initialise the RFS File system.
- */
-int rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t *mt_entry, const void *data);
-
-/**@}*/
-#endif