diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-07-15 07:36:37 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-07-15 07:36:37 +0000 |
commit | 1e01385ff01b077bb48b7fe92ce78b3066f8a99e (patch) | |
tree | e62717b2c7bedfeb2046d0c410041a8fa7c3b12e /cpukit | |
parent | 2010-07-14 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-1e01385ff01b077bb48b7fe92ce78b3066f8a99e.tar.bz2 |
2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/libio.h: Changed
rtems_filesystem_node_types_t to an enum. Declare
rtems_filesystem_handlers_default,
rtems_filesystem_operations_default,
rtems_filesystem_default_evalpath(),
rtems_filesystem_default_evalformake, and
rtems_filesystem_default_node_type().
* libfs/src/dosfs/msdos.h: Fixed msdos_node_type() prototype.
* libfs/src/defaults/default_evalformake.c,
libfs/src/defaults/default_handlers.c,
libfs/src/defaults/default_node_type.c,
libfs/src/defaults/default_ops.c: New files.
* libfs/Makefile.am: Reflect changes above.
Diffstat (limited to '')
-rw-r--r-- | cpukit/ChangeLog | 16 | ||||
-rw-r--r-- | cpukit/libcsupport/include/rtems/libio.h | 57 | ||||
-rw-r--r-- | cpukit/libfs/Makefile.am | 4 | ||||
-rw-r--r-- | cpukit/libfs/src/defaults/default_evalformake.c | 32 | ||||
-rw-r--r-- | cpukit/libfs/src/defaults/default_handlers.c | 39 | ||||
-rw-r--r-- | cpukit/libfs/src/defaults/default_node_type.c | 29 | ||||
-rw-r--r-- | cpukit/libfs/src/defaults/default_ops.c | 43 | ||||
-rw-r--r-- | cpukit/libfs/src/dosfs/msdos.h | 2 |
8 files changed, 205 insertions, 17 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 65c213e667..75d437cc4a 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,19 @@ +2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * libcsupport/include/rtems/libio.h: Changed + rtems_filesystem_node_types_t to an enum. Declare + rtems_filesystem_handlers_default, + rtems_filesystem_operations_default, + rtems_filesystem_default_evalpath(), + rtems_filesystem_default_evalformake, and + rtems_filesystem_default_node_type(). + * libfs/src/dosfs/msdos.h: Fixed msdos_node_type() prototype. + * libfs/src/defaults/default_evalformake.c, + libfs/src/defaults/default_handlers.c, + libfs/src/defaults/default_node_type.c, + libfs/src/defaults/default_ops.c: New files. + * libfs/Makefile.am: Reflect changes above. + 2010-07-14 Joel Sherrill <joel.sherrill@oarcorp.com> * libnetworking/rtems/rtems_syscall.c: Fix warning. diff --git a/cpukit/libcsupport/include/rtems/libio.h b/cpukit/libcsupport/include/rtems/libio.h index f3f9c2ea38..536e4513d7 100644 --- a/cpukit/libcsupport/include/rtems/libio.h +++ b/cpukit/libcsupport/include/rtems/libio.h @@ -56,20 +56,16 @@ extern "C" { typedef _off64_t rtems_off64_t; /** - * @name File System Node Types - * - * @{ + * @brief File system node types. */ - -#define RTEMS_FILESYSTEM_DIRECTORY 1 -#define RTEMS_FILESYSTEM_DEVICE 2 -#define RTEMS_FILESYSTEM_HARD_LINK 3 -#define RTEMS_FILESYSTEM_SYM_LINK 4 -#define RTEMS_FILESYSTEM_MEMORY_FILE 5 - -/** @} */ - -typedef int rtems_filesystem_node_types_t; +typedef enum { + RTEMS_FILESYSTEM_INVALID_NODE_TYPE, + RTEMS_FILESYSTEM_DIRECTORY, + RTEMS_FILESYSTEM_DEVICE, + RTEMS_FILESYSTEM_HARD_LINK, + RTEMS_FILESYSTEM_SYM_LINK, + RTEMS_FILESYSTEM_MEMORY_FILE +} rtems_filesystem_node_types_t; /** * @name File System Node Operations @@ -360,6 +356,10 @@ struct _rtems_filesystem_file_handlers_r { */ rtems_filesystem_rmnod_t rmnod_h; }; + +extern const rtems_filesystem_file_handlers_r +rtems_filesystem_handlers_default; + /** * This method defines the interface to the default open(2) * system call support which is provided by a file system @@ -892,10 +892,29 @@ struct _rtems_filesystem_operations_table { rtems_filesystem_statvfs_t statvfs_h; }; -/* - * @brief Default filesystem evalpath +extern const rtems_filesystem_operations_table +rtems_filesystem_operations_default; + +/** + * @brief Provides a defualt routine for filesystem + * implementation of path evaluation. */ +int rtems_filesystem_default_evalpath( + const char *pathname, + size_t pathnamelen, + int flags, + rtems_filesystem_location_info_t *pathloc +); +/** + * @brief Provides a defualt routine for filesystem + * implementation of path evaluation for make. + */ +int rtems_filesystem_default_evalformake( + const char *path, + rtems_filesystem_location_info_t *pathloc, + const char **name +); /** * @brief Provides a defualt routine for filesystem @@ -918,6 +937,14 @@ int rtems_filesystem_default_unlink( /** * @brief Provides a defualt routine for filesystem + * implementation to determine the node type. + */ +rtems_filesystem_node_types_t rtems_filesystem_default_node_type( + rtems_filesystem_location_info_t *pathloc +); + +/** + * @brief Provides a defualt routine for filesystem * implementation to create a new node. */ int rtems_filesystem_default_mknod( diff --git a/cpukit/libfs/Makefile.am b/cpukit/libfs/Makefile.am index 416b5b8ad0..8901b184bf 100644 --- a/cpukit/libfs/Makefile.am +++ b/cpukit/libfs/Makefile.am @@ -30,7 +30,9 @@ libdefaultfs_a_SOURCES = \ src/defaults/default_write.c src/defaults/default_fpathconf.c \ src/defaults/default_unmount.c src/defaults/default_evaluate_link.c \ src/defaults/default_open.c src/defaults/default_close.c \ - src/defaults/default_fsunmount.c src/defaults/default_mknod.c + src/defaults/default_fsunmount.c src/defaults/default_mknod.c \ + src/defaults/default_node_type.c src/defaults/default_evalformake.c \ + src/defaults/default_handlers.c src/defaults/default_ops.c noinst_LIBRARIES += libimfs.a libimfs_a_SOURCES = diff --git a/cpukit/libfs/src/defaults/default_evalformake.c b/cpukit/libfs/src/defaults/default_evalformake.c new file mode 100644 index 0000000000..891d961dc1 --- /dev/null +++ b/cpukit/libfs/src/defaults/default_evalformake.c @@ -0,0 +1,32 @@ +/** + * @file + * + * @ingroup LibIO + * + * @brief rtems_filesystem_default_evalformake() implementation. + */ + +/* + * Copyright (c) 2010 + * embedded brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <rtems/libio.h> +#include <rtems/seterr.h> + +int rtems_filesystem_default_evalformake( + const char *path, + rtems_filesystem_location_info_t *pathloc, + const char **name +) +{ + rtems_set_errno_and_return_minus_one( ENOTSUP ); +} diff --git a/cpukit/libfs/src/defaults/default_handlers.c b/cpukit/libfs/src/defaults/default_handlers.c new file mode 100644 index 0000000000..5343875295 --- /dev/null +++ b/cpukit/libfs/src/defaults/default_handlers.c @@ -0,0 +1,39 @@ +/** + * @file + * + * @ingroup LibIO + * + * @brief rtems_filesystem_handlers_default definition. + */ + +/* + * Copyright (c) 2010 + * embedded brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <rtems/libio.h> + +const rtems_filesystem_file_handlers_r rtems_filesystem_handlers_default = { + .open_h = rtems_filesystem_default_open, + .close_h = rtems_filesystem_default_close, + .read_h = rtems_filesystem_default_read, + .write_h = rtems_filesystem_default_write, + .ioctl_h = rtems_filesystem_default_ioctl, + .lseek_h = rtems_filesystem_default_lseek, + .fstat_h = rtems_filesystem_default_fstat, + .fchmod_h = rtems_filesystem_default_fchmod, + .ftruncate_h = rtems_filesystem_default_ftruncate, + .fpathconf_h = rtems_filesystem_default_fpathconf, + .fsync_h = rtems_filesystem_default_fsync, + .fdatasync_h = rtems_filesystem_default_fdatasync, + .fcntl_h = rtems_filesystem_default_fcntl, + .rmnod_h = rtems_filesystem_default_rmnod +}; diff --git a/cpukit/libfs/src/defaults/default_node_type.c b/cpukit/libfs/src/defaults/default_node_type.c new file mode 100644 index 0000000000..a118a04f72 --- /dev/null +++ b/cpukit/libfs/src/defaults/default_node_type.c @@ -0,0 +1,29 @@ +/** + * @file + * + * @ingroup LibIO + * + * @brief rtems_filesystem_default_node_type() implementation. + */ + +/* + * Copyright (c) 2010 + * embedded brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <rtems/libio.h> + +rtems_filesystem_node_types_t rtems_filesystem_default_node_type( + rtems_filesystem_location_info_t *pathloc +) +{ + return RTEMS_FILESYSTEM_INVALID_NODE_TYPE; +} diff --git a/cpukit/libfs/src/defaults/default_ops.c b/cpukit/libfs/src/defaults/default_ops.c new file mode 100644 index 0000000000..575cf6b2d4 --- /dev/null +++ b/cpukit/libfs/src/defaults/default_ops.c @@ -0,0 +1,43 @@ +/** + * @file + * + * @ingroup LibIO + * + * @brief rtems_filesystem_operations_default definition. + */ + +/* + * Copyright (c) 2010 + * embedded brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <rtems/libio.h> + +const rtems_filesystem_operations_table rtems_filesystem_operations_default = { + .evalpath_h = rtems_filesystem_default_evalpath, + .evalformake_h = rtems_filesystem_default_evalformake, + .link_h = rtems_filesystem_default_link, + .unlink_h = rtems_filesystem_default_unlink, + .node_type_h = rtems_filesystem_default_node_type, + .mknod_h = rtems_filesystem_default_mknod, + .chown_h = rtems_filesystem_default_chown, + .freenod_h = rtems_filesystem_default_freenode, + .mount_h = rtems_filesystem_default_mount, + .fsmount_me_h = rtems_filesystem_default_fsmount, + .unmount_h = rtems_filesystem_default_unmount, + .fsunmount_me_h = rtems_filesystem_default_fsunmount, + .utime_h = rtems_filesystem_default_utime, + .eval_link_h = rtems_filesystem_default_evaluate_link, + .symlink_h = rtems_filesystem_default_symlink, + .readlink_h = rtems_filesystem_default_readlink, + .rename_h = rtems_filesystem_default_rename, + .statvfs_h = rtems_filesystem_default_statvfs +}; diff --git a/cpukit/libfs/src/dosfs/msdos.h b/cpukit/libfs/src/dosfs/msdos.h index 03ea5a5a88..2740f98204 100644 --- a/cpukit/libfs/src/dosfs/msdos.h +++ b/cpukit/libfs/src/dosfs/msdos.h @@ -242,7 +242,7 @@ int msdos_unlink(rtems_filesystem_location_info_t *pathloc /* IN */); int msdos_free_node_info(rtems_filesystem_location_info_t *pathloc /* IN */); -int msdos_node_type(rtems_filesystem_location_info_t *pathloc); +rtems_filesystem_node_types_t msdos_node_type(rtems_filesystem_location_info_t *pathloc); int msdos_mknod( const char *path, /* IN */ |