diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-12-16 13:44:13 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-12-20 10:31:53 +0100 |
commit | 2f68778f08471fb7f13a8634ebb48c6db13c0f69 (patch) | |
tree | eae0deea88cc0d81052f8497a668dfaeecd6de40 /cpukit/libfs/src/jffs2 | |
parent | libcsupport: Add and use rtems_libio_iovec_eval() (diff) | |
download | rtems-2f68778f08471fb7f13a8634ebb48c6db13c0f69.tar.bz2 |
Filesystem: Add readv/writev handlers
The readv() and writev() support was implemented in terms of multiple
calls to the read and write handlers. This imposes a problem on device
files which use an IO vector as single request entity. For example a
low-level network device (e.g. BPF(4)) may use an IO vector to create
one frame from multiple protocol layers each with its own IO vector
entry.
Diffstat (limited to 'cpukit/libfs/src/jffs2')
-rw-r--r-- | cpukit/libfs/src/jffs2/src/fs-rtems.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c b/cpukit/libfs/src/jffs2/src/fs-rtems.c index 1b7d719e69..c8d6b9bbcd 100644 --- a/cpukit/libfs/src/jffs2/src/fs-rtems.c +++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c @@ -516,7 +516,9 @@ static const rtems_filesystem_file_handlers_r rtems_jffs2_directory_handlers = { .ftruncate_h = rtems_filesystem_default_ftruncate_directory, .fsync_h = rtems_filesystem_default_fsync_or_fdatasync, .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync, - .fcntl_h = rtems_filesystem_default_fcntl + .fcntl_h = rtems_filesystem_default_fcntl, + .readv_h = rtems_filesystem_default_readv, + .writev_h = rtems_filesystem_default_writev }; static ssize_t rtems_jffs2_file_read(rtems_libio_t *iop, void *buf, size_t len) @@ -654,7 +656,9 @@ static const rtems_filesystem_file_handlers_r rtems_jffs2_file_handlers = { .ftruncate_h = rtems_jffs2_file_ftruncate, .fsync_h = rtems_filesystem_default_fsync_or_fdatasync, .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync, - .fcntl_h = rtems_filesystem_default_fcntl + .fcntl_h = rtems_filesystem_default_fcntl, + .readv_h = rtems_filesystem_default_readv, + .writev_h = rtems_filesystem_default_writev }; static const rtems_filesystem_file_handlers_r rtems_jffs2_link_handlers = { @@ -668,7 +672,9 @@ static const rtems_filesystem_file_handlers_r rtems_jffs2_link_handlers = { .ftruncate_h = rtems_filesystem_default_ftruncate, .fsync_h = rtems_filesystem_default_fsync_or_fdatasync, .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync, - .fcntl_h = rtems_filesystem_default_fcntl + .fcntl_h = rtems_filesystem_default_fcntl, + .readv_h = rtems_filesystem_default_readv, + .writev_h = rtems_filesystem_default_writev }; static void rtems_jffs2_set_location(rtems_filesystem_location_info_t *loc, struct _inode *inode) |