- Timestamp:
- 02/14/15 19:07:19 (9 years ago)
- Branches:
- 4.11, 5, master
- Children:
- a43a3466
- Parents:
- 5640dd5
- git-author:
- Sebastian Huber <sebastian.huber@…> (02/14/15 19:07:19)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (02/14/15 20:34:42)
- Location:
- cpukit
- Files:
-
- 2 added
- 1 deleted
- 4 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
cpukit/libfs/Makefile.am
r5640dd5 rf785492 43 43 libimfs_a_SOURCES += src/imfs/deviceio.c \ 44 44 src/imfs/imfs_chown.c src/imfs/imfs_config.c \ 45 src/imfs/imfs_creat.c src/imfs/imfs_directory.c\45 src/imfs/imfs_creat.c \ 46 46 src/imfs/imfs_eval.c src/imfs/imfs_fchmod.c \ 47 src/imfs/imfs_dir.c \ 48 src/imfs/imfs_dir_default.c \ 49 src/imfs/imfs_dir_minimal.c \ 47 50 src/imfs/imfs_fifo.c \ 48 51 src/imfs/imfs_make_generic_node.c \ 49 52 src/imfs/imfs_fsunmount.c \ 50 53 src/imfs/imfs_handlers_device.c \ 51 src/imfs/imfs_handlers_directory.c \52 54 src/imfs/imfs_init.c \ 53 55 src/imfs/imfs_initsupp.c src/imfs/imfs_link.c src/imfs/imfs_load_tar.c \ -
cpukit/libfs/src/imfs/imfs.h
r5640dd5 rf785492 136 136 ); 137 137 138 IMFS_jnode_t *IMFS_node_initialize_directory( 139 IMFS_jnode_t *node, 140 void *arg 141 ); 142 138 143 /** 139 144 * @brief Returns the node and sets the generic node context. … … 179 184 IMFS_jnode_t *node 180 185 ); 186 187 IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ); 181 188 182 189 /** … … 385 392 */ 386 393 387 extern const IMFS_mknod_control IMFS_mknod_control_directory; 394 extern const IMFS_mknod_control IMFS_mknod_control_dir_default; 395 extern const IMFS_mknod_control IMFS_mknod_control_dir_minimal; 388 396 extern const IMFS_mknod_control IMFS_mknod_control_device; 389 397 extern const IMFS_mknod_control IMFS_mknod_control_memfile; … … 701 709 702 710 /** 703 * @brief Read the next directory of the IMFS.704 *705 * This routine will read the next directory entry based on the directory706 * offset. The offset should be equal to -n- time the size of an individual707 * dirent structure. If n is not an integer multiple of the sizeof a708 * dirent structure, an integer division will be performed to determine709 * directory entry that will be returned in the buffer. Count should reflect710 * -m- times the sizeof dirent bytes to be placed in the buffer.711 * If there are not -m- dirent elements from the current directory position712 * to the end of the exisiting file, the remaining entries will be placed in713 * the buffer and the returned value will be equal to -m actual- times the714 * size of a directory entry.715 */716 extern ssize_t imfs_dir_read(717 rtems_libio_t *iop, /* IN */718 void *buffer, /* IN */719 size_t count /* IN */720 );721 722 /**723 711 * @name IMFS Memory File Handlers 724 712 * -
cpukit/libfs/src/imfs/imfs_dir_default.c
r5640dd5 rf785492 2 2 * @file 3 3 * 4 * @brief IMFS Read Next Directory5 4 * @ingroup IMFS 6 5 */ … … 21 20 #include "imfs.h" 22 21 22 #include <dirent.h> 23 23 #include <string.h> 24 #include <dirent.h>25 24 26 s size_t imfs_dir_read(25 static ssize_t IMFS_dir_read( 27 26 rtems_libio_t *iop, 28 27 void *buffer, … … 87 86 return bytes_transferred; 88 87 } 88 89 static size_t IMFS_directory_size( const IMFS_jnode_t *node ) 90 { 91 size_t size = 0; 92 const IMFS_directory_t *dir = (const IMFS_directory_t *) node; 93 const rtems_chain_control *chain = &dir->Entries; 94 const rtems_chain_node *current = rtems_chain_immutable_first( chain ); 95 const rtems_chain_node *tail = rtems_chain_immutable_tail( chain ); 96 97 while ( current != tail ) { 98 size += sizeof( struct dirent ); 99 current = rtems_chain_immutable_next( current ); 100 } 101 102 return size; 103 } 104 105 static int IMFS_stat_directory( 106 const rtems_filesystem_location_info_t *loc, 107 struct stat *buf 108 ) 109 { 110 const IMFS_jnode_t *node = loc->node_access; 111 112 buf->st_size = IMFS_directory_size( node ); 113 114 return IMFS_stat( loc, buf ); 115 } 116 117 static const rtems_filesystem_file_handlers_r IMFS_dir_default_handlers = { 118 .open_h = rtems_filesystem_default_open, 119 .close_h = rtems_filesystem_default_close, 120 .read_h = IMFS_dir_read, 121 .write_h = rtems_filesystem_default_write, 122 .ioctl_h = rtems_filesystem_default_ioctl, 123 .lseek_h = rtems_filesystem_default_lseek_directory, 124 .fstat_h = IMFS_stat_directory, 125 .ftruncate_h = rtems_filesystem_default_ftruncate_directory, 126 .fsync_h = rtems_filesystem_default_fsync_or_fdatasync_success, 127 .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync_success, 128 .fcntl_h = rtems_filesystem_default_fcntl, 129 .kqfilter_h = rtems_filesystem_default_kqfilter, 130 .poll_h = rtems_filesystem_default_poll, 131 .readv_h = rtems_filesystem_default_readv, 132 .writev_h = rtems_filesystem_default_writev 133 }; 134 135 const IMFS_mknod_control IMFS_mknod_control_dir_default = { 136 { 137 .handlers = &IMFS_dir_default_handlers, 138 .node_initialize = IMFS_node_initialize_directory, 139 .node_remove = IMFS_node_remove_directory, 140 .node_destroy = IMFS_node_destroy_default 141 }, 142 .node_size = sizeof( IMFS_directory_t ) 143 }; -
cpukit/libfs/src/imfs/imfs_init.c
r5640dd5 rf785492 49 49 50 50 static const IMFS_mknod_controls IMFS_default_mknod_controls = { 51 .directory = &IMFS_mknod_control_dir ectory,51 .directory = &IMFS_mknod_control_dir_default, 52 52 .device = &IMFS_mknod_control_device, 53 53 .file = &IMFS_mknod_control_memfile, -
cpukit/sapi/include/confdefs.h
r5640dd5 rf785492 620 620 621 621 static const IMFS_mknod_controls _Configure_IMFS_mknod_controls = { 622 &IMFS_mknod_control_directory, 622 #ifdef CONFIGURE_IMFS_DISABLE_READDIR 623 &IMFS_mknod_control_dir_minimal, 624 #else 625 &IMFS_mknod_control_dir_default, 626 #endif 623 627 &IMFS_mknod_control_device, 624 628 #ifdef CONFIGURE_IMFS_DISABLE_MKNOD_FILE
Note: See TracChangeset
for help on using the changeset viewer.